<?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>203137</bug_id>
          
          <creation_ts>2019-10-17 21:49:13 -0700</creation_ts>
          <short_desc>Integrate setTimeout and setInterval with HTML5 event loop</short_desc>
          <delta_ts>2023-08-11 13:27:57 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=203586</see_also>
          <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>
          <dependson>203016</dependson>
    
    <dependson>203136</dependson>
    
    <dependson>203526</dependson>
    
    <dependson>204447</dependson>
    
    <dependson>204975</dependson>
    
    <dependson>259857</dependson>
    
    <dependson>259997</dependson>
          <blocked>202843</blocked>
    
    <blocked>164193</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1581294</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-17 21:49:13 -0700</bug_when>
    <thetext>We need to integrate DOM timers with HTML5 event loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581295</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-17 21:50:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/56396746&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581671</commentid>
    <comment_count>2</comment_count>
      <attachid>381366</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-18 21:08:45 -0700</bug_when>
    <thetext>Created attachment 381366
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1592309</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-20 23:42:22 -0800</bug_when>
    <thetext>Hm... integrating SuspendableTimerBase with EventLoop is a bit tricky because at the time of Document creation, we don&apos;t know to which EventLoop we belong due to the security origin of the document not being initialized until later in the constructor yet DocumentEventQueue relies on SuspendableTimerBase. We may need to do more refactoring to make this work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1970424</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2023-08-09 19:30:51 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/16550</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1970773</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-08-11 13:27:54 -0700</bug_when>
    <thetext>Committed 266828@main (43d0b6dbeebf): &lt;https://commits.webkit.org/266828@main&gt;

Reviewed commits have been landed. Closing PR #16550 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381366</attachid>
            <date>2019-10-18 21:08:45 -0700</date>
            <delta_ts>2019-11-21 01:15:05 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wip203137.patch</filename>
            <type>text/plain</type>
            <size>20396</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNTEzMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjQ5NCw2ICsyNDk0LDcgQEAKIHdvcmtlcnMv
RGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAogd29ya2Vycy9Xb3JrZXIuY3BwCiB3b3JrZXJzL1dv
cmtlckNvbnNvbGVDbGllbnQuY3BwCit3b3JrZXJzL1dvcmtlckV2ZW50TG9vcC5jcHAKIHdvcmtl
cnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCiB3
b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUxMzExKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODUwLDYgKzI4NTAsNyBAQAogCQk5OTZFNTlERjFERjAxMjhEMDA2NjEy
QjkgLyogTmF2aWdhdG9yV2ViRHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OTZFNTlEQzFERjAwRDkwMDA2NjEyQjkgLyogTmF2aWdhdG9yV2Vi
RHJpdmVyLmggKi87IH07CiAJCTlBNTI4RTg0MTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09i
amVjdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlB
NTI4RTgyMTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVjdHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QUIxRjM4MDE4RTI0ODlBMDA1
MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUFCMUYzN0UxOEUyNDg5QTAwNTM0NzQzIC8qIENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk5QjBGQkZBODIzNUE4OTIxMDA5OENGNUMgLyogV29ya2VyRXZl
bnRMb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QjBGQkZBNjIzNUE4OTIxMDA5OENGNUMgLyogV29ya2VyRXZlbnRMb29wLmggKi87IH07CiAJCTlC
MjRERThFMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyNERFOEMxNTE5NEI5NTAwQzU5QzI3
IC8qIEhUTUxCRElFbGVtZW50LmggKi87IH07CiAJCTlCMjdGQzYwMjM0RDlBREIwMDM5NEE0NiAv
KiBXaW5kb3dFdmVudExvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCMjdGQzVFMjM0RDlBREEwMDM5NEE0NiAvKiBXaW5kb3dFdmVudExvb3AuaCAq
LzsgfTsKIAkJOUIyRDhBNzkxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9TdGVwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjJEOEE3ODE0OTk3Q0NGMDBF
Q0VGM0UgLyogVW5kb1N0ZXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTEwODEsNiArMTEwODIsOCBAQAogCQk5QjA5OEJFMDFGM0Q2NzNEMDAy
REQ1NjIgLyogSlNEYXRhVHJhbnNmZXJJdGVtTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RhdGFUcmFuc2Zlckl0ZW1MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCMDk4QkU2MUYzRDZBRjYwMDJERDU2MiAvKiBKU1N0cmluZ0NhbGxiYWNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3RyaW5nQ2FsbGJhY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjA5OEJFNzFGM0Q2QUY2MDAyREQ1
NjIgLyogSlNTdHJpbmdDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1N0cmluZ0NhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMEZC
RkE2MjM1QTg5MjEwMDk4Q0Y1QyAvKiBXb3JrZXJFdmVudExvb3AuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V29ya2VyRXZlbnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMEZCRkE3
MjM1QTg5MjEwMDk4Q0Y1QyAvKiBXb3JrZXJFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV29ya2VyRXZlbnRMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIw
RkU4NzMxRDlFMDJERjAwNEE4QUNCIC8qIERvY3VtZW50T3JTaGFkb3dSb290LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudE9yU2hhZG93Um9vdC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlCMTMyNTdCMUYzRDJBQkEwMERBQUI2OSAvKiBEYXRhVHJhbnNmZXJJ
dGVtTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhVHJh
bnNmZXJJdGVtTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTlCNjdF
MUI5NjRFNTIwMDM0ODc0NSAvKiBTaGFkb3dSb290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBTaGFkb3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMTE2LDcg
KzExMTE5LDcgQEAKIAkJOUI3NDI2MDgyMzRCRUE2RTAwREI1MkU5IC8qIElkbGVEZWFkbGluZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJZGxlRGVhZGxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOUI3NDI2MDkyMzRCRUE2RTAwREI1MkU5IC8qIElkbGVEZWFkbGluZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJZGxlRGVhZGxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5Qjc0MjYwQTIzNEJFQTZFMDBEQjUyRTkgLyogSWRsZURlYWRsaW5lLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJ
ZGxlRGVhZGxpbmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5QjgyMDVBNTIz
NTkyOUIxMDBDM0JGNDAgLyogQWJzdHJhY3RFdmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQWJzdHJhY3RFdmVudExvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
QjgyMDVBNTIzNTkyOUIxMDBDM0JGNDAgLyogQWJzdHJhY3RFdmVudExvb3AuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWJzdHJhY3RFdmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OUI4NTUzMDUyMEU3MzNCNTAwOUVFRjRGIC8qIEV2ZW50VGFyZ2V0RmFjdG9yeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFdmVudFRhcmdldEZhY3RvcnkuY3BwOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9FdmVudFRhcmdldEZhY3RvcnkuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5Qjg2NEYwMDIzNEMwMjhBMDA2RDEw
RUIgLyogSWRsZVJlcXVlc3RPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkbGVSZXF1ZXN0T3B0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Qjg2NEYwMTIzNEMwMjhBMDA2
RDEwRUIgLyogSWRsZVJlcXVlc3RPcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJZGxlUmVxdWVzdE9wdGlvbnMu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc3MjYsNiArMTc3MjksOCBAQAog
CQkJCUE1NTYzOUNGMUM2RUZENTkwMDgwNkQ4RSAvKiBXb3JrZXJDb25zb2xlQ2xpZW50LmNwcCAq
LywKIAkJCQlBNTU2MzlEMDFDNkVGRDU5MDA4MDZEOEUgLyogV29ya2VyQ29uc29sZUNsaWVudC5o
ICovLAogCQkJCUE1MkIzNDlDMUZBNDE2RjgwMDhCNjI0NiAvKiBXb3JrZXJEZWJ1Z2dlclByb3h5
LmggKi8sCisJCQkJOUIwRkJGQTYyMzVBODkyMTAwOThDRjVDIC8qIFdvcmtlckV2ZW50TG9vcC5o
ICovLAorCQkJCTlCMEZCRkE3MjM1QTg5MjEwMDk4Q0Y1QyAvKiBXb3JrZXJFdmVudExvb3AuY3Bw
ICovLAogCQkJCUEzRTI2NDJFMTQ3NDg5OTEwMDVBODU4OCAvKiBXb3JrZXJFdmVudFF1ZXVlLmNw
cCAqLywKIAkJCQlBM0UyNjQyRjE0NzQ4OTkxMDA1QTg1ODggLyogV29ya2VyRXZlbnRRdWV1ZS5o
ICovLAogCQkJCTJFNDM0NjM2MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJHbG9iYWxTY29wZS5j
cHAgKi8sCkBAIC0yNzYzOCw3ICsyNzY0Myw3IEBACiAJCQkJN0NEMEUyQkQxRjgwQTU2RTAwMTZB
NENFIC8qIEFib3J0U2lnbmFsLmNwcCAqLywKIAkJCQk3Q0QwRTJCQzFGODBBNTZFMDAxNkE0Q0Ug
LyogQWJvcnRTaWduYWwuaCAqLywKIAkJCQk3Q0QwRTJCRTFGODBBNTZFMDAxNkE0Q0UgLyogQWJv
cnRTaWduYWwuaWRsICovLAotCQkJCTlCODIwNUE1MjM1OTI5QjEwMEMzQkY0MCAvKiBBYnN0cmFj
dEV2ZW50TG9vcC5jcHAgKi8sCisJCQkJOUI4MjA1QTUyMzU5MjlCMTAwQzNCRjQwIC8qIEFic3Ry
YWN0RXZlbnRMb29wLmggKi8sCiAJCQkJN0M1MjIyOTcxRTFEQUUxNjAwMkNCOEY3IC8qIEFjdGl2
ZURPTUNhbGxiYWNrLmNwcCAqLywKIAkJCQk3QzUyMjI5ODFFMURBRTE2MDAyQ0I4RjcgLyogQWN0
aXZlRE9NQ2FsbGJhY2suaCAqLywKIAkJCQk3Q0QwQkEwMjFCOEY3OUM5MDA1Q0VCQkUgLyogQWN0
aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suY3BwICovLApAQCAtMjg3MDYsNiArMjg3MTEsNyBAQAog
CQkJCTFBOEY2QkJGMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBp
biBIZWFkZXJzICovLAogCQkJCTI0RjU0RUFEMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlv
bkNhY2hlSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4RjZCQzEwREI1NUNEQzAwMURCNzk0
IC8qIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUIwRkJG
QTgyMzVBODkyMTAwOThDRjVDIC8qIFdvcmtlckV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUEyQUFDNTkwREMyQTNCMTAwQTIwRDlBIC8qIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2M0JENEE1RjFGNzc4RTlGMDA0Mzg3MjIgLyogQXBwbGljYXRp
b25NYW5pZmVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjMxNTJEMTkxRjk1MzFFRTAwN0E1RTRC
IC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0Fic3RyYWN0RXZlbnRMb29wLmgJKHJldmlzaW9uIDI1MTMxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFjdEV2ZW50TG9vcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw5ICs0Myw2IEBACiAgICAgdHlwZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+IFRhc2tGdW5j
dGlvbjsKICAgICB2aXJ0dWFsIHZvaWQgcXVldWVUYXNrKFRhc2tTb3VyY2UsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBUYXNrRnVuY3Rpb24mJikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHN1
c3BlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVz
dW1lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSA9IDA7Ci0KIHByb3RlY3RlZDoKICAgICBBYnN0
cmFjdEV2ZW50TG9vcCgpID0gZGVmYXVsdDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHJldmlzaW9uIDI1MTMxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYxNDUsMTEgKzYxNDUsMTEgQEAKICAgICAgICAgdGFzay5wZXJm
b3JtVGFzaygqdGhpcyk7CiB9CiAKLVdpbmRvd0V2ZW50TG9vcCYgRG9jdW1lbnQ6OmV2ZW50TG9v
cCgpCitBYnN0cmFjdEV2ZW50TG9vcCYgRG9jdW1lbnQ6OmV2ZW50TG9vcCgpCiB7CiAgICAgaWYg
KCFtX2V2ZW50TG9vcCkgewogICAgICAgICBpZiAobV9jb250ZXh0RG9jdW1lbnQpCi0gICAgICAg
ICAgICBtX2V2ZW50TG9vcCA9ICZtX2NvbnRleHREb2N1bWVudC0+ZXZlbnRMb29wKCk7CisgICAg
ICAgICAgICBtX2V2ZW50TG9vcCA9IG1fY29udGV4dERvY3VtZW50LT5tX2V2ZW50TG9vcDsKICAg
ICAgICAgZWxzZSAvLyBGSVhNRTogRG9jdW1lbnRzIG9mIHNpbWlsYXIgb3JpZ2luIHNob3VsZCBz
aGFyZSB0aGUgc2FtZSBldmVudCBsb29wLgogICAgICAgICAgICAgbV9ldmVudExvb3AgPSBXaW5k
b3dFdmVudExvb3A6OmNyZWF0ZSgpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShy
ZXZpc2lvbiAyNTEzMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA2MCw3ICsxMDYwLDcgQEAKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cG9zdFRhc2soVGFzayYmKSBmaW5hbDsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdz
IHRocmVhZCBhc3luY2hyb25vdXNseS4KIAotICAgIFdpbmRvd0V2ZW50TG9vcCYgZXZlbnRMb29w
KCk7CisgICAgQWJzdHJhY3RFdmVudExvb3AmIGV2ZW50TG9vcCgpOwogICAgIFdpbmRvd0V2ZW50
TG9vcCogZXZlbnRMb29wSWZFeGlzdHMoKSB7IHJldHVybiBtX2V2ZW50TG9vcC5nZXQoKTsgfQog
CiAgICAgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKiBzY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXIoKSB7IHJldHVybiBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5nZXQoKTsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShyZXZp
c2lvbiAyNTEzMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQWJzdHJhY3RFdmVudExvb3A7CiBjbGFzcyBDYWNoZWRTY3JpcHQ7CiBjbGFz
cyBEYXRhYmFzZUNvbnRleHQ7CiBjbGFzcyBFdmVudFF1ZXVlOwpAQCAtOTAsNiArOTEsOCBAQAog
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdCA9IDA7CiAK
KyAgICB2aXJ0dWFsIEFic3RyYWN0RXZlbnRMb29wJiBldmVudExvb3AoKSA9IDA7CisKICAgICB2
aXJ0dWFsIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVVJMIGNvbXBs
ZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdCA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9XaW5kb3dFdmVudExvb3AuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9XaW5kb3dFdmVudExvb3AuY3BwCShyZXZpc2lvbiAyNTEzMTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vV2luZG93RXZlbnRMb29wLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTYgKzQz
LDE0IEBACiAgICAgbV90YXNrcy5hcHBlbmQoVGFzayB7IHNvdXJjZSwgV1RGTW92ZSh0YXNrKSwg
ZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLmlkZW50aWZpZXIoKSB9KTsKIH0KIAotdm9pZCBX
aW5kb3dFdmVudExvb3A6OnN1c3BlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCit2b2lkIFdp
bmRvd0V2ZW50TG9vcDo6c3VzcGVuZChEb2N1bWVudCYpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIH0KIAotdm9pZCBXaW5kb3dFdmVudExvb3A6OnJlc3VtZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KQordm9pZCBXaW5kb3dFdmVudExvb3A6OnJlc3VtZShEb2N1bWVu
dCYgZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQo
aXM8RG9jdW1lbnQ+KGNvbnRleHQpKTsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KTsKICAgICBpZiAoIW1fZG9jdW1lbnRJZGVudGlmaWVyc0ZvclN1c3Bl
bmRlZFRhc2tzLmNvbnRhaW5zKGRvY3VtZW50LmlkZW50aWZpZXIoKSkpCiAgICAgICAgIHJldHVy
bjsKICAgICBzY2hlZHVsZVRvUnVuSWZOZWVkZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9XaW5kb3dFdmVudExvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2lu
ZG93RXZlbnRMb29wLmgJKHJldmlzaW9uIDI1MTMxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9X
aW5kb3dFdmVudExvb3AuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQAogCiAgICAg
dm9pZCBxdWV1ZVRhc2soVGFza1NvdXJjZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFRhc2tG
dW5jdGlvbiYmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc3VzcGVuZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXN1bWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIG92ZXJyaWRlOworICAgIHZvaWQgc3VzcGVuZChEb2N1bWVudCYpOworICAgIHZvaWQgcmVz
dW1lKERvY3VtZW50Jik7CiAKIHByaXZhdGU6CiAgICAgV2luZG93RXZlbnRMb29wKCkgPSBkZWZh
dWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudExvb3AuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRMb29wLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50TG9vcC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRMb29wLmgiCisKKyNpbmNsdWRlICJX
b3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtsZXRHbG9iYWxTY29wZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXb3JrZXJFdmVudExvb3A+IFdvcmtlckV2ZW50TG9v
cDo6Y3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJiBjb250ZXh0KQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdvcmtlckV2ZW50TG9vcChjb250ZXh0KSk7Cit9CisKK1JlZjxXb3JrZXJFdmVu
dExvb3A+IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKFdvcmtsZXRHbG9iYWxTY29wZSYgY29udGV4
dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrZXJFdmVudExvb3AoY29udGV4dCkp
OworfQorCitXb3JrZXJFdmVudExvb3A6OldvcmtlckV2ZW50TG9vcChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQoreworfQor
Cit2b2lkIFdvcmtlckV2ZW50TG9vcDo6cXVldWVUYXNrKFRhc2tTb3VyY2Ugc291cmNlLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUYXNrRnVuY3Rpb24mJiBmdW5jdGlvbikKK3sK
KyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gJmNvbnRleHQpOworICAgIG1fdGFz
a3MuYXBwZW5kKHsgc291cmNlLCBXVEZNb3ZlKGZ1bmN0aW9uKSB9KTsKKyAgICBzY2hlZHVsZVRv
UnVuSWZOZWVkZWQoKTsKK30KKworYm9vbCBXb3JrZXJFdmVudExvb3A6Omhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitjb25zdCBjaGFyKiBXb3Jr
ZXJFdmVudExvb3A6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAi
V29ya2VyRXZlbnRMb29wIjsKK30KKwordm9pZCBXb3JrZXJFdmVudExvb3A6OnN1c3BlbmQoUmVh
c29uRm9yU3VzcGVuc2lvbikKK3sKK30KKwordm9pZCBXb3JrZXJFdmVudExvb3A6OnJlc3VtZSgp
Cit7CisgICAgc2NoZWR1bGVUb1J1bklmTmVlZGVkKCk7Cit9CisKK3ZvaWQgV29ya2VyRXZlbnRM
b29wOjpzdG9wKCkKK3sKKyAgICBtX3Rhc2tzLmNsZWFyKCk7Cit9CisKK3ZvaWQgV29ya2VyRXZl
bnRMb29wOjpzY2hlZHVsZVRvUnVuSWZOZWVkZWQoKQoreworICAgIGF1dG8qIGNvbnRleHQgPSBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgQVNTRVJUKGNvbnRleHQpOworICAgIGlmICht
X2lzU2NoZWR1bGVkVG9SdW4gfHwgbV90YXNrcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1faXNTY2hlZHVsZWRUb1J1biA9IHRydWU7CisgICAgY29udGV4dC0+cG9zdFRhc2so
W2V2ZW50TG9vcCA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
KyAgICAgICAgZXZlbnRMb29wLT5tX2lzU2NoZWR1bGVkVG9SdW4gPSBmYWxzZTsKKyAgICAgICAg
ZXZlbnRMb29wLT5ydW4oKTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJFdmVudExvb3A6OnJ1
bigpCit7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAg
ICBpZiAoIWNvbnRleHQgfHwgY29udGV4dC0+YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSB8
fCBjb250ZXh0LT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBmb3IgKGF1dG8mIHRhc2sgOiBtX3Rhc2tzKQorICAgICAgICB0YXNrLnRhc2soKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckV2ZW50TG9vcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRXZlbnRMb29wLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJFdmVudExvb3AuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBYnN0cmFjdEV2ZW50TG9vcC5o
IgorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2xldEdsb2JhbFNjb3BlOworCitj
bGFzcyBXb3JrZXJFdmVudExvb3AgZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RFdmVudExvb3AsIHBy
aXZhdGUgQWN0aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICAvLyBFeHBsaWNpdGx5IHRha2Ug
V29ya2VyR2xvYmFsU2NvcGUgYW5kIFdvcmtsZXRHbG9iYWxTY29wZSBmb3IgZG9jdW1lbnRhdGlv
biBwdXJwb3Nlcy4KKyAgICBzdGF0aWMgUmVmPFdvcmtlckV2ZW50TG9vcD4gY3JlYXRlKFdvcmtl
ckdsb2JhbFNjb3BlJik7CisgICAgc3RhdGljIFJlZjxXb3JrZXJFdmVudExvb3A+IGNyZWF0ZShX
b3JrbGV0R2xvYmFsU2NvcGUmKTsKKworICAgIHZvaWQgcXVldWVUYXNrKFRhc2tTb3VyY2UsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBUYXNrRnVuY3Rpb24mJikgb3ZlcnJpZGU7CisKK3ByaXZh
dGU6CisgICAgV29ya2VyRXZlbnRMb29wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKworICAg
IHZvaWQgc2NoZWR1bGVUb1J1bklmTmVlZGVkKCk7CisgICAgdm9pZCBydW4oKTsKKworICAgIC8v
IEFjdGl2ZURPTU9iamVjdDsKKyAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZXN1bWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKwor
ICAgIHN0cnVjdCBUYXNrIHsKKyAgICAgICAgVGFza1NvdXJjZSBzb3VyY2U7CisgICAgICAgIFRh
c2tGdW5jdGlvbiB0YXNrOworICAgIH07CisKKyAgICBWZWN0b3I8VGFzaz4gbV90YXNrczsKKyAg
ICBib29sIG1faXNTY2hlZHVsZWRUb1J1biB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcAkocmV2aXNpb24gMjUxMzExKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5oIgogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV29ya2Vy
RXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24uaCIK
QEAgLTEwNCw2ICsxMDUsMTMgQEAKICAgICB0aHJlYWQoKS53b3JrZXJSZXBvcnRpbmdQcm94eSgp
Lndvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCk7CiB9CiAKK0Fic3RyYWN0RXZlbnRMb29wJiBX
b3JrZXJHbG9iYWxTY29wZTo6ZXZlbnRMb29wKCkKK3sKKyAgICBpZiAoIW1fZXZlbnRMb29wKQor
ICAgICAgICBtX2V2ZW50TG9vcCA9IFdvcmtlckV2ZW50TG9vcDo6Y3JlYXRlKCp0aGlzKTsKKyAg
ICByZXR1cm4gKm1fZXZlbnRMb29wOworfQorCiBTdHJpbmcgV29ya2VyR2xvYmFsU2NvcGU6Om9y
aWdpbigpIGNvbnN0CiB7CiAgICAgYXV0byogc2VjdXJpdHlPcmlnaW4gPSB0aGlzLT5zZWN1cml0
eU9yaWdpbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaAkocmV2aXNpb24gMjUxMzExKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiBjbGFzcyBNaWNy
b3Rhc2tRdWV1ZTsKIGNsYXNzIFBlcmZvcm1hbmNlOwogY2xhc3MgU2NoZWR1bGVkQWN0aW9uOwor
Y2xhc3MgV29ya2VyRXZlbnRMb29wOwogY2xhc3MgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjsK
IGNsYXNzIFdvcmtlckxvY2F0aW9uOwogY2xhc3MgV29ya2VyTmF2aWdhdG9yOwpAQCAtNjUsNiAr
NjYsOCBAQAogICAgIHZpcnR1YWwgYm9vbCBpc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgQWJzdHJhY3RFdmVu
dExvb3AmIGV2ZW50TG9vcCgpIGZpbmFsOworCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3VybDsgfQogICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdCBmaW5hbDsK
ICAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KQEAgLTE5MSw2ICsxOTQsOCBAQAogICAgIGJvb2wgbV9pc09ubGluZTsKICAgICBib29s
IG1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5OwogCisgICAgUmVm
UHRyPFdvcmtlckV2ZW50TG9vcD4gbV9ldmVudExvb3A7CisKICAgICBtdXRhYmxlIFdvcmtlckV2
ZW50UXVldWUgbV9ldmVudFF1ZXVlOwogCiAgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBtX3RvcE9y
aWdpbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNj
b3BlLmNwcAkocmV2aXNpb24gMjUxMzExKQorKysgU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xp
Y3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50TG9vcC5o
IgogI2luY2x1ZGUgIldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+
CkBAIC04OSw2ICs5MCwxMyBAQAogICAgIHJldHVybiBzY29wZXM7CiB9CiAKK0Fic3RyYWN0RXZl
bnRMb29wJiBXb3JrbGV0R2xvYmFsU2NvcGU6OmV2ZW50TG9vcCgpCit7CisgICAgaWYgKCFtX2V2
ZW50TG9vcCkKKyAgICAgICAgbV9ldmVudExvb3AgPSBXb3JrZXJFdmVudExvb3A6OmNyZWF0ZSgq
dGhpcyk7CisgICAgcmV0dXJuICptX2V2ZW50TG9vcDsKK30KKwogU3RyaW5nIFdvcmtsZXRHbG9i
YWxTY29wZTo6b3JpZ2luKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90b3BPcmlnaW4tPnRvU3Ry
aW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuaAkocmV2aXNpb24gMjUxMzExKQorKysgU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dEdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVO
QUJMRShDU1NfUEFJTlRJTkdfQVBJKQogCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtNDEsOCArNDAsMTAgQEAKICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworY2xh
c3MgV29ya2VyRXZlbnRMb29wOwogY2xhc3MgV29ya2xldFNjcmlwdENvbnRyb2xsZXI7Ci1jbGFz
cyBTY3JpcHRTb3VyY2VDb2RlOwogCiBlbnVtIFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXJU
eXBlIHsgfTsKIHVzaW5nIFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPFdvcmtsZXRHbG9iYWxTY29wZUlkZW50aWZpZXJUeXBlPjsKQEAgLTU3LDYgKzU4LDgg
QEAKIAogICAgIHZpcnR1YWwgYm9vbCBpc1BhaW50V29ya2xldEdsb2JhbFNjb3BlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAorICAgIEFic3RyYWN0RXZlbnRMb29wJiBldmVudExvb3AoKSBm
aW5hbDsKKwogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb2Rl
LnVybCgpOyB9CiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0IGZpbmFsOwogCkBAIC0xMjksNiAr
MTMyLDggQEAKIAogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47CiAKKyAgICBS
ZWZQdHI8V29ya2VyRXZlbnRMb29wPiBtX2V2ZW50TG9vcDsKKwogICAgIC8vIEZJWE1FOiBUaGlz
IGlzIG5vdCBpbXBsZW1lbnRlZCBwcm9wZXJseSwgaXQganVzdCBzYXRpc2ZpZXMgdGhlIGNvbXBp
bGVyLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEx
MzYKICAgICBtdXRhYmxlIFdvcmtlckV2ZW50UXVldWUgbV9ldmVudFF1ZXVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>