<?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>230385</bug_id>
          
          <creation_ts>2021-09-16 20:55:52 -0700</creation_ts>
          <short_desc>Make ScrollAnimation a little more generic</short_desc>
          <delta_ts>2021-09-17 14:44:26 -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>
          
          <blocked>230310</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cathiechen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1794324</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-16 20:55:52 -0700</bug_when>
    <thetext>Make ScrollAnimation a little more generic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794328</commentid>
    <comment_count>1</comment_count>
      <attachid>438438</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-16 21:01:01 -0700</bug_when>
    <thetext>Created attachment 438438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794337</commentid>
    <comment_count>2</comment_count>
      <attachid>438442</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-16 21:30:29 -0700</bug_when>
    <thetext>Created attachment 438442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794339</commentid>
    <comment_count>3</comment_count>
      <attachid>438444</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-16 21:39:19 -0700</bug_when>
    <thetext>Created attachment 438444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794527</commentid>
    <comment_count>4</comment_count>
      <attachid>438494</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-17 11:41:13 -0700</bug_when>
    <thetext>Created attachment 438494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794626</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-17 14:43:54 -0700</bug_when>
    <thetext>Committed r282697 (241834@main): &lt;https://commits.webkit.org/241834@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438494.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794628</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-17 14:44:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/83256465&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438438</attachid>
            <date>2021-09-16 21:01:01 -0700</date>
            <delta_ts>2021-09-16 21:50:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230385-20210916210100.patch</filename>
            <type>text/plain</type>
            <size>45934</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjMyYWZjNTY3ZmNmYTQ4
NmIxNWJiZTUxZTFkZjhjZjg5MDQ0Yjg0Yy4uNmI5OGU2OWNiOGJmZWMzMjEzMjE0ODRjZjY2YTI1
YWQ5NGVkMGNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTA5LTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2Nyb2xs
QW5pbWF0aW9uIGEgbGl0dGxlIG1vcmUgZ2VuZXJpYworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMzg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlcGFyZSBmb3IgbmV3IFNjcm9sbEFuaW1hdGlvbiBz
dWJjbGFzc2VzIGJ5IG1ha2luZyBpdCBhIGxpdHRsZSBtb3JlIGdlbmVyaWMuIFJhdGhlcgorICAg
ICAgICB0aGFuIHRoZSBmdW5jdGlvbiBjYWxsYmFja3MsIHVzZSBhIHZpcnR1YWwgY2xpZW50IGNs
YXNzLCBpbXBsZW1lbnRlZCBieSBTY3JvbGxBbmltYXRvcgorICAgICAgICBhbmQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuIFJlbW92ZSB0aGUgZ2VuZXJpYyAnc2Ny
b2xsJyBtZXRob2RzCisgICAgICAgIGZyb20gdGhlIGJhc2UgY2xhc3MsIHNpbmNlIHRoZXkgb25s
eSBhcHBseSB0byBTY3JvbGxBbmltYXRpb25TbW9vdGggKGNsaWVudHMgbmVlZAorICAgICAgICB0
byBrZWVwIGRlcml2ZWQgY2xhc3MgcG9pbnRlcnMsIGFuZCBtb3N0IGFscmVhZHkgZG8pLgorICAg
ICAgICAKKyAgICAgICAgUmVtb3ZlIGFtYmlndWl0eSBhcm91bmQgdGhlIGN1cnJlbnRQb3NpdGlv
biBieSByZXF1aXJpbmcgaXQgZm9yIGV2ZXJ5ICdzdGFydCcgY2FsbC4KKyAgICAgICAgUmVtb3Zl
IGFtYmlndWl0eSBhcm91bmQgc2V0Q3VycmVudFBvc2l0aW9uKCkgYnkgcmVtb3ZpbmcgaXQuIENs
aWVudHMganVzdCBjYWxsIHN0b3AoKS4KKyAgICAgICAgCisgICAgICAgIERvIHBlci1heGlzIHNl
dHVwIHdoZW4gc3RhcnRpbmcgYW5pbWF0aW9ucywgbm90IHdoZW4gY3JlYXRpbmcgb25lLCBzbyB0
aGUgYW5pbWF0aW9uIHN0YXJ0cworICAgICAgICBvdXQgc3RhdGVsZXNzLgorCisgICAgICAgICog
U291cmNlcy50eHQ6IEJ1aWxkIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwIGZv
ciBtYWNPUywgbW9zdGx5IHRvIGNhdGNoCisgICAgICAgIGJ1aWxkIGVycm9ycyAoaXQncyBjdXJy
ZW50bHkgdW51c2VkKS4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6cmVzZXRDdXJyZW50UG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1h
dGlvblNtb290aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9u
RGlkVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmltYXRpb25EaWRFbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEV4dGVu
dHNGb3JBbmltYXRpb24pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6
U2Nyb2xsQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6dXBk
YXRlU2Nyb2xsRXh0ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OnNl
cnZpY2VBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uOjp+U2Ny
b2xsQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlv
bjo6c2Nyb2xsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6
dXBkYXRlVmlzaWJsZUxlbmd0aHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0aW9uOjpzZXRDdXJyZW50UG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0aW9uS2luZXRpYzo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRp
YWxWZWxvY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjph
bmltYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OnN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25LaW5ldGljLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0
aW9uU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3Rh
cnRBbmltYXRlZFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9v
dGg6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRpb25TbW9vdGg6OnVwZGF0ZVNjcm9sbEV4dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjppbml0aWFsaXplQXhlc0RhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRpb25UaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6UGVyQXhpc0RhdGE6OlBlckF4aXNE
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6
c2Nyb2xsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290
aDo6dXBkYXRlVmlzaWJsZUxlbmd0aHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0aW9uU21vb3RoOjpzZXRDdXJyZW50UG9zaXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpT
Y3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9uV2l0
aG91dEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
VG9Qb3NpdGlvbldpdGhBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OnJldGFyZ2V0UnVubmluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvcjo6Y29udGVudHNSZXNpemVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yOjp3aWxsRW5kTGl2ZVJlc2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvcjo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3I6OmRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlkRW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKToKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptX2tleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdl
bmVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoYW5kbGVX
aGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6dXBk
YXRlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpz
Y3JvbGxBbmltYXRpb25EaWRVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmg6CisKIDIwMjEtMDktMTYgIFR5bGVyIFdpbGNvY2sgPHR3aWxj
by5vQHByb3Rvbm1haWwuY29tPiBhbmQgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIGZvbnQtd2VpZ2h0IHNob3VsZCBhbHdheXMgc2VyaWFsaXplIGFz
IGEgbnVtYmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJiODRiYWE1OTU0NWMzYTNmMjQ0YzVmMjJmZWZl
ODIzMGZiZDcwZjIuLjc0OWZmY2IyODRmZThkOWFiZjhmZWMxNzQ4NzZmNGIzY2ZiY2VkZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0xODExLDYgKzE4MTEsNyBAQCBwbGF0Zm9ybS9SZWZlcnJlclBvbGlj
eS5jcHAKIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKIHBsYXRmb3JtL1J1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKIHBsYXRmb3JtL1NTTEtleUdlbmVyYXRvci5jcHAKK3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguY3BwCiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKIHBsYXRmb3JtL1Njcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM3NTg0MzA2MTc3ZDg2NWI0OWUxOWI3ZTAz
OWRlZGY1MDBmMTNkNmQuLjE1NjM0MzM1ODUwOTE2MmMwMjk5YmQzMmU2YTdjNGRkMDA4NjJiYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTM1Miw2ICszNTIsNyBAQAogCQkwRjk0RjM3RTIzNjYxNjI2MDAzQUE1QzcgLyogU3R5
bGVSdWxlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY5NEYzN0MyMzY2MTEzMTAwM0FBNUM3IC8qIFN0eWxlUnVsZVR5cGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjlEQUEwRjFGRDFDNjZB
MDA3OUM1QjIgLyogRE9NR0NPdXRwdXRDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEQUEwRTFGRDFDNjY0MDA3OUM1QjIgLyogRE9N
R0NPdXRwdXRDb25zdHJhaW50LmggKi87IH07CiAJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAv
KiBHcmFwaGljc0xheWVyVXBkYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJV
cGRhdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEZBNjFCMEUyNkY0MzIxMzAwMUFBREI2IC8qIFNjcm9sbEFuaW1hdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNjFCMEMyNkY0MzIxMjAw
MUFBREI2IC8qIFNjcm9sbEFuaW1hdGlvbi5oICovOyB9OwogCQkwRkI2MjUyRjE4REUxQjE1MDBB
MDdDMDUgLyogR2VvbWV0cnlVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjYyNTJEMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0
aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGQjg4OTBGMTY3RDMwMTYwMDEwQ0RBNSAvKiBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjg4OTBE
MTY3RDMwMTYwMDEwQ0RBNSAvKiBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkJCNUZCRTI2MDk5MUQy
MDA1NDU3MkMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCQjVGQkQyNjA5NUE5QzAwNTQ1NzJD
IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjMyNCw2ICs2MzI1LDcgQEAKIAkJMEZBMEEw
RTUyM0FFQUEzNTAwMEVFQjk0IC8qIGRpYWxvZy5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0
aCA9IGRpYWxvZy5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTI0RDc3MTYy
REY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0xheWVyVXBkYXRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQTI0RDc4MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGlj
c0xheWVyVXBkYXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGlj
c0xheWVyVXBkYXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkE2MUIwQzI2
RjQzMjEyMDAxQUFEQjYgLyogU2Nyb2xsQW5pbWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkIwNjg5NDI1MjQzQjkwMDAxRThFNzUgLyogRGlzcGxheVRleHRCb3guY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRGlzcGxheVRleHRCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkIwNjg5NjI1MjQzQjkwMDAxRThFNzUgLyogRGlzcGxheVRleHRCb3guaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGlzcGxheVRleHRCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZCNjI1MkMxOERFMUIxNTAwQTA3QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb21ldHJ5VXRpbGl0aWVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDQzLDYgKzI4MDQ1LDcgQEAKIAkJCQk0
MTEyMjNCODI2MDI0NEZFMDBCMEEwQjYgLyogU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIuaCAqLywKIAkJCQlCQzhBRTM0QzEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFyZWEu
Y3BwICovLAogCQkJCUJDOEFFMzREMTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5o
ICovLAorCQkJCTBGQTYxQjBDMjZGNDMyMTIwMDFBQURCNiAvKiBTY3JvbGxBbmltYXRpb24uaCAq
LywKIAkJCQkwRkM2OTJCQzI1N0MwRjQxMDA5OEUzRjkgLyogU2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yy5jcHAgKi8sCiAJCQkJMEZDNjkyQkEyNTdDMEY0MDAwOThFM0Y5IC8qIFNjcm9sbEFuaW1hdGlv
bktpbmV0aWMuaCAqLywKIAkJCQkwRkM2OTJCRDI1N0MwRjQxMDA5OEUzRjkgLyogU2Nyb2xsQW5p
bWF0aW9uU21vb3RoLmNwcCAqLywKQEAgLTMzMTMyLDcgKzMzMTM1LDYgQEAKIAkJCQlCQzY5MzI3
NDBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2NTJGQkJCQzBERTI3Q0I2MDAwMUQzODYgLyogSlNET01XaW5kb3dDdXN0b20uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ2MENCRjM2MUQ0QkNEMEUwMDkyRTg4RSAvKiBKU0RPTVdpbmRvd1Byb3Bl
cnRpZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxMEJDRjU2MjZGMENEOEMwMDQwQjEyNCAvKiBS
VENMb2NhbFNlc3Npb25EZXNjcmlwdGlvbkluaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1RTBF
OTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdDNDVDOUQzMUUzRkNCRDcwMEFBQjU1OCAvKiBKU0RPTVdyYXBwZXJDYWNoZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNBODA2MUUxRTAzQjU4NTAwOEExRjI2IC8qIEpTRG91YmxlUmFuZ2UuaCBp
biBIZWFkZXJzICovLApAQCAtMzQ3NDIsNiArMzQ3NDQsNyBAQAogCQkJCTA3QUI5OTZCMThEQTND
MDEwMDE4NzcxRSAvKiBSVENJY2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMzU5MTA4
MUU3RERDNzMwMEYzMDYzMCAvKiBSVENJY2VUcmFuc3BvcnRQb2xpY3kuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMxMzU5MTA5MUU3RERDNzMwMEYzMDYzMCAvKiBSVENJY2VUcmFuc3BvcnRTdGF0ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDEwQkNGNTYyNkYwQ0Q4QzAwNDBCMTI0IC8qIFJUQ0xvY2Fs
U2Vzc2lvbkRlc2NyaXB0aW9uSW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFDMTRCQzYyNkRF
NkRFODAwNjg1QkY1IC8qIFJUQ05ldHdvcmtNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzM3OTRGRTE5RjU4NjRFMDBFNUEwNDUgLyogUlRDTm90aWZpZXJzTW9jay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDczNzk0REUxOUVFMkM1MjAwRTVBMDQ1IC8qIFJUQ09mZmVyQW5zd2VyT3B0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDgxNCw2ICszNDgxNyw3IEBACiAJCQkJMTQwMEQ3QTgx
NzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDOEFFMzRGMTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUQ5MjVCNjgwRjY0RDRERDAwQjg0N0YwIC8qIFNjcm9sbEFsaWdubWVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZBNjFCMEUyNkY0MzIxMzAwMUFBREI2IC8qIFNjcm9s
bEFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0EzQkY2N0UxMEQ5OUJBRTAwRTZDRTUz
IC8qIFNjcm9sbEFuaW1hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE3NzQ4MDEzNzhCNzcy
MDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUUx
RkE3MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRvck1hYy5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEuY3BwCmluZGV4IDY5ZWIxMTE0YzE4MDJlYTUxNTlkODRkOThiN2YzMWZmZWEwY2M1
OTQuLjNmODM2ZTRhYzc2Y2Y5NGZiYzE4MDU4NjhjODUzMzY3NzRhZjRhMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU5pY29zaWE6OnJlc2V0Q3VycmVudFBvc2l0aW9uKCkKIHsKICNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgIG1fc21vb3Ro
QW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24oc2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRTY3Jv
bGxQb3NpdGlvbigpKTsKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3AoKTsKICNlbmRp
ZgogfQogCkBAIC03OSwxOCArNzksNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCkKICAgICBpZiAo
bV9raW5ldGljQW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2tpbmV0aWNBbmlt
YXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KAotICAgICAgICBbdGhp
c10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJldHVybiB7IEludFBvaW50KG1p
bmltdW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0aW9uKCkp
LCBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OwotICAgICAgICB9LAotICAgICAgICBb
dGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJ
TkcpCi0gICAgICAgICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgICAgICAgICAg
bV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7Ci0jZW5kaWYK
LSAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVVcGRhdGVTY29wZSgpOwotICAg
ICAgICAgICAgc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbFRvKHBvc2l0aW9uKTsKLSAgICAgICAgfSk7
CisgICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5l
dGljPigqdGhpcyk7CiB9CiAjZW5kaWYKIApAQCAtMTAwLDE2ICs4OSw3IEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlv
blNtb290aCgpCiAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3Ro
PigKLSAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7Ci0gICAgICAgICAgICByZXR1
cm4geyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1T
Y3JvbGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKLSAgICAg
ICAgfSwKLSAgICAgICAgY3VycmVudFNjcm9sbFBvc2l0aW9uKCksCi0gICAgICAgIFt0aGlzXShG
bG9hdFBvaW50JiYgcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBj
cmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICAgICAgc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbFRv
KHBvc2l0aW9uKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10geyB9KTsKKyAgICBtX3Ntb290aEFu
aW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigqdGhpcyk7CiB9CiAj
ZW5kaWYKIApAQCAtMTI1LDEyICsxMDUsMTIgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpoYW5kbGVXaGVlbEUKICAg
ICBtX2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xsSGlzdG9yeSh3aGVlbEV2ZW50KTsK
ICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKICAgICBpZiAod2hlZWxFdmVudC5pc0Vu
ZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgewotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0
YXJ0KGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCBtX2tpbmV0aWNBbmltYXRpb24tPmNvbXB1dGVW
ZWxvY2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhciwgY2FuSGF2ZVZlcnRpY2FsU2Ny
b2xsYmFyKTsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xs
V2l0aEluaXRpYWxWZWxvY2l0eShjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwgbV9raW5ldGljQW5p
bWF0aW9uLT5jb21wdXRlVmVsb2NpdHkoKSwgY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIsIGNh
bkhhdmVWZXJ0aWNhbFNjcm9sbGJhcik7CiAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xl
YXJTY3JvbGxIaXN0b3J5KCk7CiAgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1
bHQ6OmhhbmRsZWQoKTsKICAgICB9CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNUcmFuc2l0aW9uaW5n
VG9Nb21lbnR1bVNjcm9sbCgpKSB7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnQo
Y3VycmVudFNjcm9sbFBvc2l0aW9uKCksIHdoZWVsRXZlbnQuc3dpcGVWZWxvY2l0eSgpLCBjYW5I
YXZlSG9yaXpvbnRhbFNjcm9sbGJhciwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAg
ICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxv
Y2l0eShjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwgd2hlZWxFdmVudC5zd2lwZVZlbG9jaXR5KCks
IGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyLCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIpOwog
ICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwogICAgICAg
ICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CiAgICAgfQpAQCAt
MTgyLDggKzE2Miw4IEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFCiAjaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCiAgICAgaWYgKG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkICYmICF3aGVlbEV2
ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSkgewogICAgICAgICBlbnN1cmVTY3JvbGxB
bmltYXRpb25TbW9vdGgoKTsKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChIb3Jp
em9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCBkZWx0YVgpOwotICAgICAgICBtX3Nt
b290aEFuaW1hdGlvbi0+c2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAx
LCBkZWx0YVkpOworICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9s
bChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCBjdXJyZW50U2Nyb2xsUG9zaXRp
b24oKSwgMSwgZGVsdGFYKTsKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0YXJ0QW5pbWF0
ZWRTY3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIGN1cnJlbnRTY3JvbGxQ
b3NpdGlvbigpLCAxLCBkZWx0YVkpOwogICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5n
UmVzdWx0OjpoYW5kbGVkKCk7CiAgICAgfQogI2VuZGlmCkBAIC0yMTYsNiArMTk2LDMxIEBAIGZs
b2F0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpwYWdlU2NhbGVG
YWN0b3IoKQogICAgICAgICBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
PihzY3JvbGxpbmdOb2RlKCkpLmZyYW1lU2NhbGVGYWN0b3IoKSA6IDEuOwogfQogCit2b2lkIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmltYXRpb25E
aWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHBv
c2l0aW9uKQoreworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIGlmICgmYW5pbWF0
aW9uID09IG1fa2luZXRpY0FuaW1hdGlvbi5nZXQoKSkgeworICAgICAgICBpZiAobV9zbW9vdGhB
bmltYXRpb24pCisgICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOworICAgIH0K
KyNlbmRpZgorICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVVcGRhdGVTY29wZSgpOworICAg
IHNjcm9sbGluZ05vZGUoKS5zY3JvbGxUbyhwb3NpdGlvbik7Cit9CisKK3ZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZChT
Y3JvbGxBbmltYXRpb24mKQoreworfQorCitTY3JvbGxFeHRlbnRzIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9s
bEFuaW1hdGlvbiYpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgSW50UG9pbnQobWluaW11bVNj
cm9sbFBvc2l0aW9uKCkpLAorICAgICAgICBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24o
KSksCisgICAgICAgIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpCisgICAgfTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElO
RykgJiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmgKaW5kZXggZDFhZDI3M2FhYmZmMTAwYWVmN2JkOTA1
MDJkMmVhYTk2YzFiYjlkMy4uMDg4OTkwMjc1YTQ5ZWQ5Yjk5ZjE0ZjA1MDliMjkwZmRiYzFkMzQw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU5pY29zaWEuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9M
TElORykgJiYgVVNFKE5JQ09TSUEpCiAKKyNpbmNsdWRlICJTY3JvbGxBbmltYXRpb24uaCIKICNp
bmNsdWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgiCiAjaW5jbHVkZSAiVGhyZWFkZWRTY3JvbGxpbmdUcmVl
LmgiCkBAIC00NCw3ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEgOiBwdWJsaWMgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZSB7CitjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlLCBwdWJsaWMgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYShTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZSYsIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKTsKICAgICB2aXJ0
dWFsIH5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSgpOwpAQCAtNjYs
NiArNjcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290
aCgpOwogI2VuZGlmCiAKKyAgICAvLyBTY3JvbGxBbmltYXRpb25DbGllbnQKKyAgICB2b2lkIHNj
cm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBjb25zdCBGbG9hdFBvaW50
JiBjdXJyZW50UG9zaXRpb24pIGZpbmFsOworICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkRW5k
KFNjcm9sbEFuaW1hdGlvbiYpIGZpbmFsOworICAgIFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50
c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKSBmaW5hbDsKKwogI2lmIEVOQUJMRShLSU5F
VElDX1NDUk9MTElORykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yz4gbV9raW5ldGljQW5pbWF0aW9uOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbi5oCmluZGV4IDAwNGJiYzZiNjM4MDJiYzBlOTk5Yjk2YjZkZDYzNTIyZmU4
M2M3NmUuLmZkM2U0ZjVkNzAyMzM3ZDk3ZjBjZjdhYjc4ODQxMzM2YTEzZjFhOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsMTYgKzI0LDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTY3JvbGxBbmltYXRpb25faAotI2RlZmluZSBTY3JvbGxB
bmltYXRpb25faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RmxvYXRQb2ludDsKLWNsYXNzIFNjcm9sbGFibGVBcmVhOwotZW51bSBjbGFzcyBTY3JvbGxDbGFt
cGluZyA6IGJvb2w7CitjbGFzcyBTY3JvbGxBbmltYXRpb247CiAKIHN0cnVjdCBTY3JvbGxFeHRl
bnRzIHsKICAgICBTY3JvbGxQb3NpdGlvbiBtaW5pbXVtU2Nyb2xsUG9zaXRpb247CkBAIC00MCwx
OSArNDAsMzIgQEAgc3RydWN0IFNjcm9sbEV4dGVudHMgewogICAgIEludFNpemUgdmlzaWJsZVNp
emU7CiB9OwogCitjbGFzcyBTY3JvbGxBbmltYXRpb25DbGllbnQgeworcHVibGljOgorICAgIHZp
cnR1YWwgflNjcm9sbEFuaW1hdGlvbkNsaWVudCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxv
YXRQb2ludCYgY3VycmVudFBvc2l0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEFu
aW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxF
eHRlbnRzIHNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgPSAwOwor
fTsKKwogY2xhc3MgU2Nyb2xsQW5pbWF0aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb24oKSB7IH07Ci0gICAgdmly
dHVhbCBib29sIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHks
IGZsb2F0IC8qIHN0ZXAgKi8sIGZsb2F0IC8qIG11bHRpcGxpZXIgKi8pIHsgcmV0dXJuIHRydWU7
IH07Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBGbG9hdFBvaW50JikgeyB9OworICAg
IFNjcm9sbEFuaW1hdGlvbihTY3JvbGxBbmltYXRpb25DbGllbnQmIGNsaWVudCkKKyAgICAgICAg
OiBtX2NsaWVudChjbGllbnQpCisgICAgeyB9CisgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9u
KCkgPSBkZWZhdWx0OworCiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVZpc2libGVMZW5ndGhzKCkgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBzZXRD
dXJyZW50UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2VydmljZUFuaW1hdGlvbigpIHsgfTsKICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMoKSB7IH07CisgICAg
CisgICAgLy8gRklYTUU6IE5vLW9wLiBOZWVkIHRvIHVzZSB0aGlzIGluc3RlYWQgb2Ygc3ViY2xh
c3NlcyBoYXZpbmcgdGltZXJzLgorICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKCkg
eyB9OworCitwcm90ZWN0ZWQ6CisgICAgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBtX2NsaWVudDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNjcm9sbEFuaW1hdGlv
bl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25L
aW5ldGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0
aWMuY3BwCmluZGV4IDIxOGRiYWEwZTVlNzNmMTIwZTY0YThiODgxYzc3ZDdiNzBiYWQxZDMuLjhl
MzJlZThmYjM1MTQyZGM2Yjc0ZDJkZGYyMmYxNWE1MGRlM2YwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTEyLDkgKzExMyw4IEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYzo6UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3JvbGwoU2Vjb25kcyB0aW1lRGVsdGEpCiAg
ICAgcmV0dXJuIG1fdmVsb2NpdHk7CiB9CiAKLVNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9s
bEFuaW1hdGlvbktpbmV0aWMoU2Nyb2xsRXh0ZW50c0NhbGxiYWNrJiYgc2Nyb2xsRXh0ZW50c0Z1
bmN0aW9uLCBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayYmIG5vdGlmeVBvc2l0aW9uQ2hh
bmdlZEZ1bmN0aW9uKQotICAgIDogbV9zY3JvbGxFeHRlbnRzRnVuY3Rpb24oV1RGTW92ZShzY3Jv
bGxFeHRlbnRzRnVuY3Rpb24pKQotICAgICwgbV9ub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlv
bihXVEZNb3ZlKG5vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKSkKK1Njcm9sbEFuaW1hdGlv
bktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWMoU2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBj
bGllbnQpCisgICAgOiBTY3JvbGxBbmltYXRpb24oY2xpZW50KQogICAgICwgbV9hbmltYXRpb25U
aW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZTY3JvbGxBbmltYXRpb25LaW5ldGljOjph
bmltYXRpb25UaW1lckZpcmVkKQogewogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCkBAIC0xNjgs
NyArMTY4LDcgQEAgRmxvYXRQb2ludCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpjb21wdXRlVmVs
b2NpdHkoKQogICAgIHJldHVybiBGbG9hdFBvaW50KGFjY3VtRGVsdGEueCgpICogLTEgLyAobGFz
dCAtIGZpcnN0KS52YWx1ZSgpLCBhY2N1bURlbHRhLnkoKSAqIC0xIC8gKGxhc3QgLSBmaXJzdCku
dmFsdWUoKSk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnQoY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbFBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwg
Ym9vbCBtYXlIU2Nyb2xsLCBib29sIG1heVZTY3JvbGwpCitib29sIFNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0
UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGJvb2wg
bWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKQogewogICAgIHN0b3AoKTsKIApAQCAtMTc2LDEx
ICsxNzYsMTEgQEAgdm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzdGFydChjb25zdCBGbG9h
dFBvaW50JiBpbml0aWFsUG9zaXRpb24sIGNvbnN0IEZsb2EKICAgICAgICAgbV9wb3NpdGlvbiA9
IGluaXRpYWxQb3NpdGlvbjsKICAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGF1dG8gZGVsdGEgPSBkZWx0
YVRvTmV4dEZyYW1lKCk7Ci0gICAgYXV0byBleHRlbnRzID0gbV9zY3JvbGxFeHRlbnRzRnVuY3Rp
b24oKTsKKyAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0
aW9uKCp0aGlzKTsKIAogICAgIGF1dG8gYWNjdW11bGF0ZVZlbG9jaXR5ID0gWyZdKGRvdWJsZSB2
ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4gYXhpc0RhdGEpIC0+IGRvdWJsZSB7
CiAgICAgICAgIGlmIChheGlzRGF0YSAmJiBheGlzRGF0YS52YWx1ZSgpLmFuaW1hdGVTY3JvbGwo
ZGVsdGEpKSB7CkBAIC0yMTQsNiArMjE0LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGlj
OjpzdGFydChjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsUG9zaXRpb24sIGNvbnN0IEZsb2EKICAg
ICBtX3Bvc2l0aW9uID0gaW5pdGlhbFBvc2l0aW9uOwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3Rv
bmljVGltZTo6bm93KCkgLSB0aWNrVGltZSAvIDIuOwogICAgIGFuaW1hdGlvblRpbWVyRmlyZWQo
KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjph
bmltYXRpb25UaW1lckZpcmVkKCkKQEAgLTIzMyw3ICsyMzQsNyBAQCB2b2lkIFNjcm9sbEFuaW1h
dGlvbktpbmV0aWM6OmFuaW1hdGlvblRpbWVyRmlyZWQoKQogICAgIGRvdWJsZSB4ID0gbV9ob3Jp
em9udGFsRGF0YSA/IG1faG9yaXpvbnRhbERhdGEudmFsdWUoKS5wb3NpdGlvbigpIDogbV9wb3Np
dGlvbi54KCk7CiAgICAgZG91YmxlIHkgPSBtX3ZlcnRpY2FsRGF0YSA/IG1fdmVydGljYWxEYXRh
LnZhbHVlKCkucG9zaXRpb24oKSA6IG1fcG9zaXRpb24ueSgpOwogICAgIG1fcG9zaXRpb24gPSBG
bG9hdFBvaW50KHgsIHkpOwotICAgIG1fbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24oRmxv
YXRQb2ludChtX3Bvc2l0aW9uKSk7CisgICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0aW9uRGlkVXBk
YXRlKCp0aGlzLCBGbG9hdFBvaW50KG1fcG9zaXRpb24pKTsKIH0KIAogU2Vjb25kcyBTY3JvbGxB
bmltYXRpb25LaW5ldGljOjpkZWx0YVRvTmV4dEZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaAppbmRleCBmYzRmYWIxZTlmNDMxYTM4
Y2E3YWIxYzZlOTk2MmQ4Y2JjMWJjNmM1Li40ZDg0NDg4NTQ2OTcyMGI3ZmM3N2I3YmQ5ODEyYjIw
ZmNmNDNmNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25LaW5ldGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYy5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBJ
Z2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTcsMjcgKzU4LDIz
IEBAIHByaXZhdGU6CiAgICAgfTsKIAogcHVibGljOgotICAgIHVzaW5nIFNjcm9sbEV4dGVudHND
YWxsYmFjayA9IFdURjo6RnVuY3Rpb248U2Nyb2xsRXh0ZW50cyh2b2lkKT47Ci0gICAgdXNpbmcg
Tm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRmxvYXRQ
b2ludCYmKT47Ci0KLSAgICBTY3JvbGxBbmltYXRpb25LaW5ldGljKFNjcm9sbEV4dGVudHNDYWxs
YmFjayYmLCBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayYmKTsKKyAgICBTY3JvbGxBbmlt
YXRpb25LaW5ldGljKFNjcm9sbEFuaW1hdGlvbkNsaWVudCYpOwogICAgIHZpcnR1YWwgflNjcm9s
bEFuaW1hdGlvbktpbmV0aWMoKTsKIAorICAgIGJvb2wgc3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJ
bml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbFBvc2l0aW9uLCBjb25zdCBG
bG9hdFBvaW50JiB2ZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xsLCBib29sIG1heVZTY3JvbGwpOwor
CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IGZpbmFs
OworCiAgICAgdm9pZCBhcHBlbmRUb1Njcm9sbEhpc3RvcnkoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50Jik7CiAgICAgdm9pZCBjbGVhclNjcm9sbEhpc3RvcnkoKTsKLSAgICBGbG9hdFBvaW50IGNv
bXB1dGVWZWxvY2l0eSgpOwotCi0gICAgdm9pZCBzdGFydChjb25zdCBGbG9hdFBvaW50JiBpbml0
aWFsUG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGws
IGJvb2wgbWF5VlNjcm9sbCk7Ci0gICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgorICAgIEZsb2F0UG9pbnQgY29t
cHV0ZVZlbG9jaXR5KCk7CisKICAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKICAgICBT
ZWNvbmRzIGRlbHRhVG9OZXh0RnJhbWUoKTsKIAotICAgIFNjcm9sbEV4dGVudHNDYWxsYmFjayBt
X3Njcm9sbEV4dGVudHNGdW5jdGlvbjsKLSAgICBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFj
ayBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uOwotCiAgICAgc3RkOjpvcHRpb25hbDxQ
ZXJBeGlzRGF0YT4gbV9ob3Jpem9udGFsRGF0YTsKICAgICBzdGQ6Om9wdGlvbmFsPFBlckF4aXNE
YXRhPiBtX3ZlcnRpY2FsRGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvblNtb290aC5jcHAKaW5kZXggOTVmZThiYmFhYjJmNTYyOWQwZWE2M2JlMzgz
N2YzMTFmMWViY2FlYi4uOWJmMzQ2ZTBmNDhmZjVhOGUwMjI3YTUwM2JlYTU0ODQ4YWM3NWM4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3Ro
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGgu
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5M
LgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoYykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQyLDI5ICs0Miw4IEBAIHN0YXRpYyBjb25zdCBTZWNv
bmRzIHRpY2tUaW1lID0gMV9zIC8gZnJhbWVSYXRlOwogc3RhdGljIGNvbnN0IFNlY29uZHMgbWlu
aW11bVRpbWVySW50ZXJ2YWwgeyAxX21zIH07CiBzdGF0aWMgY29uc3QgZG91YmxlIHNtb290aEZh
Y3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCA9IDE7CiAKLVNjcm9sbEFuaW1hdGlvblNtb290aDo6
UGVyQXhpc0RhdGE6OlBlckF4aXNEYXRhKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9u
LCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgU2Nyb2xsRXh0ZW50c0NhbGxiYWNrJiBleHRl
bnRzQ2FsbGJhY2spCi17Ci0gICAgYXV0byBleHRlbnRzID0gZXh0ZW50c0NhbGxiYWNrKCk7Ci0g
ICAgc3dpdGNoIChvcmllbnRhdGlvbikgewotICAgIGNhc2UgSG9yaXpvbnRhbFNjcm9sbGJhcjoK
LSAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb24ueCgpOwotICAgICAgICB2aXNpYmxl
TGVuZ3RoID0gZXh0ZW50cy52aXNpYmxlU2l6ZS53aWR0aCgpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFZlcnRpY2FsU2Nyb2xsYmFyOgotICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBwb3Np
dGlvbi55KCk7Ci0gICAgICAgIHZpc2libGVMZW5ndGggPSBleHRlbnRzLnZpc2libGVTaXplLmhl
aWdodCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBkZXNpcmVkUG9zaXRpb24gPSBj
dXJyZW50UG9zaXRpb247Ci19Ci0KLVNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0
aW9uU21vb3RoKFNjcm9sbEV4dGVudHNDYWxsYmFjayYmIHNjcm9sbEV4dGVudHNGdW5jdGlvbiwg
Y29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIE5vdGlmeVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNr
JiYgbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24sIE5vdGlmeUFuaW1hdGlvblN0b3BwZWRD
YWxsYmFjayYmIG5vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbikKLSAgICA6IG1fc2Nyb2xs
RXh0ZW50c0Z1bmN0aW9uKFdURk1vdmUoc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKSkKLSAgICAsIG1f
bm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24oV1RGTW92ZShub3RpZnlQb3NpdGlvbkNoYW5n
ZWRGdW5jdGlvbikpCi0gICAgLCBtX25vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbihXVEZN
b3ZlKG5vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbikpCi0gICAgLCBtX2hvcml6b250YWxE
YXRhKEhvcml6b250YWxTY3JvbGxiYXIsIHBvc2l0aW9uLCBtX3Njcm9sbEV4dGVudHNGdW5jdGlv
bikKLSAgICAsIG1fdmVydGljYWxEYXRhKFZlcnRpY2FsU2Nyb2xsYmFyLCBwb3NpdGlvbiwgbV9z
Y3JvbGxFeHRlbnRzRnVuY3Rpb24pCitTY3JvbGxBbmltYXRpb25TbW9vdGg6OlNjcm9sbEFuaW1h
dGlvblNtb290aChTY3JvbGxBbmltYXRpb25DbGllbnQmIGNsaWVudCkKKyAgICA6IFNjcm9sbEFu
aW1hdGlvbihjbGllbnQpCiAgICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQo
KSwgdGhpcywgJlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJGaXJlZCkKIHsK
ICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQpAQCAtNzIsMTEgKzUxLDE1IEBAIFNjcm9sbEFuaW1h
dGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbEV4dGVudHNDYWxsYmFjayYm
IHNjcm9sbEV4dGVuCiAjZW5kaWYKIH0KIAotYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnNj
cm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIpCitTY3JvbGxBbmltYXRp
b25TbW9vdGg6On5TY3JvbGxBbmltYXRpb25TbW9vdGgoKSA9IGRlZmF1bHQ7CisKK2Jvb2wgU2Ny
b2xsQW5pbWF0aW9uU21vb3RoOjpzdGFydEFuaW1hdGVkU2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0
aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgY29uc3QgRmxv
YXRQb2ludCYgZnJvbVBvc2l0aW9uLCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKQogewog
ICAgIGZsb2F0IG1pblNjcm9sbFBvc2l0aW9uOwogICAgIGZsb2F0IG1heFNjcm9sbFBvc2l0aW9u
OwotICAgIGF1dG8gZXh0ZW50cyA9IG1fc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKCk7CisgICAgYXV0
byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbigqdGhpcyk7Cisg
ICAgaW5pdGlhbGl6ZUF4ZXNEYXRhKGV4dGVudHMsIGZyb21Qb3NpdGlvbik7CisKICAgICBpZiAo
b3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBtaW5TY3JvbGxQ
b3NpdGlvbiA9IGV4dGVudHMubWluaW11bVNjcm9sbFBvc2l0aW9uLngoKTsKICAgICAgICAgbWF4
U2Nyb2xsUG9zaXRpb24gPSBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlvbi54KCk7CkBAIC05
Myw0MSArNzYsNDAgQEAgYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnNjcm9sbChTY3JvbGxi
YXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnUKICAgICByZXR1cm4gbmVlZFRv
U2Nyb2xsOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c2Nyb2xsKGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uKQorYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0QW5p
bWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZyb21Qb3NpdGlvbiwg
Y29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb25Qb3NpdGlvbikKIHsKICAgICBTY3JvbGxHcmFu
dWxhcml0eSBncmFudWxhcml0eSA9IFNjcm9sbEJ5UGFnZTsKLSAgICBhdXRvIGV4dGVudHMgPSBt
X3Njcm9sbEV4dGVudHNGdW5jdGlvbigpOwotICAgIGJvb2wgbmVlZFRvU2Nyb2xsID0gdXBkYXRl
UGVyQXhpc0RhdGEobV9ob3Jpem9udGFsRGF0YSwgZ3JhbnVsYXJpdHksIHBvc2l0aW9uLngoKSwg
ZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRpb24ueCgpLCBleHRlbnRzLm1heGltdW1TY3JvbGxQ
b3NpdGlvbi54KCksIHNtb290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCk7CisgICAgYXV0
byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbigqdGhpcyk7Cisg
ICAgaW5pdGlhbGl6ZUF4ZXNEYXRhKGV4dGVudHMsIGZyb21Qb3NpdGlvbik7CisgICAgYm9vbCBu
ZWVkVG9TY3JvbGwgPSB1cGRhdGVQZXJBeGlzRGF0YShtX2hvcml6b250YWxEYXRhLCBncmFudWxh
cml0eSwgZGVzdGluYXRpb25Qb3NpdGlvbi54KCksIGV4dGVudHMubWluaW11bVNjcm9sbFBvc2l0
aW9uLngoKSwgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsUG9zaXRpb24ueCgpLCBzbW9vdGhGYWN0b3JG
b3JQcm9ncmFtbWF0aWNTY3JvbGwpOwogICAgIG5lZWRUb1Njcm9sbCB8PQotICAgICAgICB1cGRh
dGVQZXJBeGlzRGF0YShtX3ZlcnRpY2FsRGF0YSwgZ3JhbnVsYXJpdHksIHBvc2l0aW9uLnkoKSwg
ZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRpb24ueSgpLCBleHRlbnRzLm1heGltdW1TY3JvbGxQ
b3NpdGlvbi55KCksIHNtb290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCk7CisgICAgICAg
IHVwZGF0ZVBlckF4aXNEYXRhKG1fdmVydGljYWxEYXRhLCBncmFudWxhcml0eSwgZGVzdGluYXRp
b25Qb3NpdGlvbi55KCksIGV4dGVudHMubWluaW11bVNjcm9sbFBvc2l0aW9uLnkoKSwgZXh0ZW50
cy5tYXhpbXVtU2Nyb2xsUG9zaXRpb24ueSgpLCBzbW9vdGhGYWN0b3JGb3JQcm9ncmFtbWF0aWNT
Y3JvbGwpOwogICAgIGlmIChuZWVkVG9TY3JvbGwgJiYgIWlzQWN0aXZlKCkpIHsKICAgICAgICAg
bV9zdGFydFRpbWUgPSBtX2hvcml6b250YWxEYXRhLnN0YXJ0VGltZTsKICAgICAgICAgYW5pbWF0
aW9uVGltZXJGaXJlZCgpOwogICAgIH0KLX07CisgICAgcmV0dXJuIG5lZWRUb1Njcm9sbDsKK30K
IAogdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0b3AoKQogewogICAgIG1fYW5pbWF0aW9u
VGltZXIuc3RvcCgpOwotICAgIG1fbm90aWZ5QW5pbWF0aW9uU3RvcHBlZEZ1bmN0aW9uKCk7Cisg
ICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0aW9uRGlkRW5kKCp0aGlzKTsKIH0KIAotdm9pZCBTY3Jv
bGxBbmltYXRpb25TbW9vdGg6OnVwZGF0ZVZpc2libGVMZW5ndGhzKCkKK3ZvaWQgU2Nyb2xsQW5p
bWF0aW9uU21vb3RoOjp1cGRhdGVTY3JvbGxFeHRlbnRzKCkKIHsKLSAgICBhdXRvIGV4dGVudHMg
PSBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbigpOworICAgIGF1dG8gZXh0ZW50cyA9IG1fY2xpZW50
LnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oKnRoaXMpOwogICAgIG1faG9yaXpvbnRhbERhdGEu
dmlzaWJsZUxlbmd0aCA9IGV4dGVudHMudmlzaWJsZVNpemUud2lkdGgoKTsKICAgICBtX3ZlcnRp
Y2FsRGF0YS52aXNpYmxlTGVuZ3RoID0gZXh0ZW50cy52aXNpYmxlU2l6ZS5oZWlnaHQoKTsKIH0K
IAotdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiBwb3NpdGlvbikKK3ZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjppbml0aWFs
aXplQXhlc0RhdGEoY29uc3QgU2Nyb2xsRXh0ZW50cyYgZXh0ZW50cywgY29uc3QgRmxvYXRQb2lu
dCYgc3RhcnRQb3NpdGlvbikKIHsKLSAgICBzdG9wKCk7Ci0gICAgbV9ob3Jpem9udGFsRGF0YSA9
IFBlckF4aXNEYXRhKHBvc2l0aW9uLngoKSwgbV9ob3Jpem9udGFsRGF0YS52aXNpYmxlTGVuZ3Ro
KTsKLSAgICBtX3ZlcnRpY2FsRGF0YSA9IFBlckF4aXNEYXRhKHBvc2l0aW9uLnkoKSwgbV92ZXJ0
aWNhbERhdGEudmlzaWJsZUxlbmd0aCk7CisgICAgbV9ob3Jpem9udGFsRGF0YSA9IFBlckF4aXNE
YXRhKHN0YXJ0UG9zaXRpb24ueCgpLCBleHRlbnRzLnZpc2libGVTaXplLndpZHRoKCkpOworICAg
IG1fdmVydGljYWxEYXRhID0gUGVyQXhpc0RhdGEoc3RhcnRQb3NpdGlvbi55KCksIGV4dGVudHMu
dmlzaWJsZVNpemUuaGVpZ2h0KCkpOwogfQogCi1TY3JvbGxBbmltYXRpb25TbW9vdGg6On5TY3Jv
bGxBbmltYXRpb25TbW9vdGgoKSA9IGRlZmF1bHQ7Ci0KIHN0YXRpYyBpbmxpbmUgZG91YmxlIGN1
cnZlQXQoU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2ZSBjdXJ2ZSwgZG91YmxlIHQpCiB7CiAg
ICAgc3dpdGNoIChjdXJ2ZSkgewpAQCAtNDM3LDEwICs0MTksMTAgQEAgdm9pZCBTY3JvbGxBbmlt
YXRpb25TbW9vdGg6OmFuaW1hdGlvblRpbWVyRmlyZWQoKQogCiAgICAgaWYgKGNvbnRpbnVlQW5p
bWF0aW9uKQogICAgICAgICBzdGFydE5leHRUaW1lcihzdGQ6Om1heChtaW5pbXVtVGltZXJJbnRl
cnZhbCwgZGVsdGFUb05leHRGcmFtZSkpOwotICAgIGVsc2UKLSAgICAgICAgbV9ub3RpZnlBbmlt
YXRpb25TdG9wcGVkRnVuY3Rpb24oKTsKIAotICAgIG1fbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVu
Y3Rpb24oRmxvYXRQb2ludChtX2hvcml6b250YWxEYXRhLmN1cnJlbnRQb3NpdGlvbiwgbV92ZXJ0
aWNhbERhdGEuY3VycmVudFBvc2l0aW9uKSk7CisgICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0aW9u
RGlkVXBkYXRlKCp0aGlzLCB7IG1faG9yaXpvbnRhbERhdGEuY3VycmVudFBvc2l0aW9uLCBtX3Zl
cnRpY2FsRGF0YS5jdXJyZW50UG9zaXRpb24gfSk7CisgICAgaWYgKCFjb250aW51ZUFuaW1hdGlv
bikKKyAgICAgICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0aW9uRGlkRW5kKCp0aGlzKTsKIH0KIAog
dm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0TmV4dFRpbWVyKFNlY29uZHMgZGVsYXkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9v
dGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCmlu
ZGV4IGZiZjUzMjliMTAwYzBkOTg4YzY4MjFkNWU5NDQyMGUxYzU0ZjljZmMuLmJmNjAyZmQ4ODQx
OTczOThlMjQ5MWRiMDZiNTA5ZDZlZDMzMTc5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzIsMTYgKzMzLDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0
UG9pbnQ7Ci1jbGFzcyBTY3JvbGxhYmxlQXJlYTsKIGVudW0gY2xhc3MgU2Nyb2xsQ2xhbXBpbmcg
OiBib29sOwogCiBjbGFzcyBTY3JvbGxBbmltYXRpb25TbW9vdGggZmluYWw6IHB1YmxpYyBTY3Jv
bGxBbmltYXRpb24gewogcHVibGljOgotICAgIHVzaW5nIFNjcm9sbEV4dGVudHNDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248U2Nyb2xsRXh0ZW50cyh2b2lkKT47Ci0gICAgdXNpbmcgTm90aWZ5UG9z
aXRpb25DaGFuZ2VkQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoRmxvYXRQb2ludCYmKT47
Ci0gICAgdXNpbmcgTm90aWZ5QW5pbWF0aW9uU3RvcHBlZENhbGxiYWNrID0gV1RGOjpGdW5jdGlv
bjx2b2lkKHZvaWQpPjsKLQotICAgIFNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxFeHRlbnRz
Q2FsbGJhY2smJiwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIE5vdGlmeVBvc2l0aW9uQ2hh
bmdlZENhbGxiYWNrJiYsIE5vdGlmeUFuaW1hdGlvblN0b3BwZWRDYWxsYmFjayYmKTsKKyAgICBT
Y3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsQW5pbWF0aW9uQ2xpZW50Jik7CiAgICAgdmlydHVh
bCB+U2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7CiAKICAgICBlbnVtIGNsYXNzIEN1cnZlIHsKQEAg
LTUyLDE5ICs0OCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIEJvdW5jZQogICAgIH07CiAKLXByaXZh
dGU6Ci0gICAgYm9vbCBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFy
aXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKSBvdmVycmlkZTsKLSAgICB2b2lkIHNj
cm9sbChjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wKCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB1cGRhdGVWaXNpYmxlTGVuZ3RocygpIG92ZXJyaWRlOwotICAgIHZvaWQg
c2V0Q3VycmVudFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKLSAgICBib29s
IGlzQWN0aXZlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBzdHJ1Y3QgUGVyQXhpc0RhdGEgewot
ICAgICAgICBQZXJBeGlzRGF0YSgpID0gZGVsZXRlOworICAgIGJvb2wgc3RhcnRBbmltYXRlZFNj
cm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGNvbnN0IEZsb2F0
UG9pbnQmIGZyb21Qb3NpdGlvbiwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllcik7CisgICAg
Ym9vbCBzdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihjb25zdCBGbG9hdFBvaW50JiBm
cm9tUG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uUG9zaXRpb24pOwogCi0g
ICAgICAgIFBlckF4aXNEYXRhKFNjcm9sbGJhck9yaWVudGF0aW9uLCBjb25zdCBGbG9hdFBvaW50
JiBwb3NpdGlvbiwgU2Nyb2xsRXh0ZW50c0NhbGxiYWNrJik7CisgICAgdm9pZCBzdG9wKCkgZmlu
YWw7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxFeHRlbnRzKCkgZmluYWw7CisgICAgYm9vbCBpc0Fj
dGl2ZSgpIGNvbnN0IGZpbmFsOwogCitwcml2YXRlOgorICAgIHN0cnVjdCBQZXJBeGlzRGF0YSB7
CisgICAgICAgIFBlckF4aXNEYXRhKCkgPSBkZWZhdWx0OwogICAgICAgICBQZXJBeGlzRGF0YShm
bG9hdCBwb3NpdGlvbiwgaW50IGxlbmd0aCkKICAgICAgICAgICAgIDogY3VycmVudFBvc2l0aW9u
KHBvc2l0aW9uKQogICAgICAgICAgICAgLCBkZXNpcmVkUG9zaXRpb24ocG9zaXRpb24pCkBAIC05
OCwxOSArOTEsMTggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgdXBkYXRlUGVyQXhpc0RhdGEoUGVy
QXhpc0RhdGEmLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbmV3UG9zaXRpb24sIGZsb2F0IG1p
blNjcm9sbFBvc2l0aW9uLCBmbG9hdCBtYXhTY3JvbGxQb3NpdGlvbiwgZG91YmxlIHNtb290aEZh
Y3RvciA9IDEpOwogICAgIGJvb2wgYW5pbWF0ZVNjcm9sbChQZXJBeGlzRGF0YSYsIE1vbm90b25p
Y1RpbWUgY3VycmVudFRpbWUpOworICAgIAorICAgIHZvaWQgaW5pdGlhbGl6ZUF4ZXNEYXRhKGNv
bnN0IFNjcm9sbEV4dGVudHMmLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvc2l0aW9uKTsKIAog
ICAgIHZvaWQgcmVxdWVzdEFuaW1hdGlvblRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHN0YXJ0TmV4
dFRpbWVyKFNlY29uZHMgZGVsYXkpOwogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZCgpOwog
Ci0gICAgU2Nyb2xsRXh0ZW50c0NhbGxiYWNrIG1fc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uOwotICAg
IE5vdGlmeVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNrIG1fbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVu
Y3Rpb247Ci0gICAgTm90aWZ5QW5pbWF0aW9uU3RvcHBlZENhbGxiYWNrIG1fbm90aWZ5QW5pbWF0
aW9uU3RvcHBlZEZ1bmN0aW9uOwotCiAgICAgUGVyQXhpc0RhdGEgbV9ob3Jpem9udGFsRGF0YTsK
ICAgICBQZXJBeGlzRGF0YSBtX3ZlcnRpY2FsRGF0YTsKIAogICAgIE1vbm90b25pY1RpbWUgbV9z
dGFydFRpbWU7CisgICAgLy8gRklYTUU6IFNob3VsZCBub3QgaGF2ZSB0aW1lciBoZXJlLCBhbmQg
aW5zdGVhZCB1c2Ugc2VydmljZUFuaW1hdGlvbigpLgogICAgIFJ1bkxvb3A6OlRpbWVyPFNjcm9s
bEFuaW1hdGlvblNtb290aD4gbV9hbmltYXRpb25UaW1lcjsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCAxYWVjOTZkY2IzNWM5MDdmNmYwZDZi
Y2IyNWJiMjNhY2I2MTA2YmZkLi5iZjY5OWQxYjI1YjA0NjBiODQ5ZGY5MWI5YzRmNDg3Yzk4NDY2
MWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC01
NCwyMCArNTQsNyBAQCBTY3JvbGxBbmltYXRvcjo6U2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsZUFy
ZWEmIHNjcm9sbGFibGVBcmVhKQogICAgIDogbV9zY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJl
YSkKICAgICAsIG1fc2Nyb2xsQ29udHJvbGxlcigqdGhpcykKICAgICAsIG1fc2Nyb2xsQ29udHJv
bGxlckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbENvbnRyb2xs
ZXJBbmltYXRpb25UaW1lckZpcmVkKQotICAgICwgbV9zY3JvbGxBbmltYXRpb24obWFrZVVuaXF1
ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRl
bnRzIHsKLSAgICAgICAgICAgIHJldHVybiB7IG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9s
bFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCksIG1f
c2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKSB9OwotICAgICAgICB9LAotICAgICAgICBtX2N1
cnJlbnRQb3NpdGlvbiwKLSAgICAgICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewot
ICAgICAgICAgICAgRmxvYXRTaXplIGRlbHRhID0gcG9zaXRpb24gLSBtX2N1cnJlbnRQb3NpdGlv
bjsKLSAgICAgICAgICAgIG1fY3VycmVudFBvc2l0aW9uID0gV1RGTW92ZShwb3NpdGlvbik7Ci0g
ICAgICAgICAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoZGVsdGEpOwotICAgICAgICAgICAgdXBk
YXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7Ci0gICAgICAgIH0sCi0gICAgICAg
IFt0aGlzXSB7Ci0gICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbEJlaGF2aW9y
U3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpOb3RJbkFuaW1hdGlvbik7Ci0gICAgICAgIH0p
KQorICAgICwgbV9zY3JvbGxBbmltYXRpb24obWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9v
dGg+KCp0aGlzKSkKICAgICAsIG1fa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcihtYWtlVW5pcXVl
PEtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I+KCp0aGlzLCBtX3Njcm9sbENvbnRyb2xsZXIpKQog
ewogfQpAQCAtOTksMTEgKzg2LDggQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKFNjcm9s
bGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eQogICAgIH0KIAog
I2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBpZiAobV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxBbmltYXRvckVuYWJsZWQoKSAmJiAhYmVoYXZp
b3IuY29udGFpbnMoU2Nyb2xsQmVoYXZpb3I6Ok5ldmVyQW5pbWF0ZSkpIHsKLSAgICAgICAgaWYg
KCFtX3Njcm9sbEFuaW1hdGlvbi0+aXNBY3RpdmUoKSkKLSAgICAgICAgICAgIG1fc2Nyb2xsQW5p
bWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24obV9jdXJyZW50UG9zaXRpb24pOwotICAgICAgICBy
ZXR1cm4gbV9zY3JvbGxBbmltYXRpb24tPnNjcm9sbChvcmllbnRhdGlvbiwgZ3JhbnVsYXJpdHks
IHN0ZXAsIG11bHRpcGxpZXIpOwotICAgIH0KKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYS5zY3Jv
bGxBbmltYXRvckVuYWJsZWQoKSAmJiAhYmVoYXZpb3IuY29udGFpbnMoU2Nyb2xsQmVoYXZpb3I6
Ok5ldmVyQW5pbWF0ZSkpCisgICAgICAgIHJldHVybiBtX3Njcm9sbEFuaW1hdGlvbi0+c3RhcnRB
bmltYXRlZFNjcm9sbChvcmllbnRhdGlvbiwgZ3JhbnVsYXJpdHksIG1fY3VycmVudFBvc2l0aW9u
LCBzdGVwLCBtdWx0aXBsaWVyKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHNjcm9sbFRvUG9zaXRp
b25XaXRob3V0QW5pbWF0aW9uKGN1cnJlbnRQb3NpdGlvbigpICsgZGVsdGEpOwpAQCAtMTI0LDcg
KzEwOCw3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRob3V0QW5p
bWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uCiAgICAgaWYgKGFkanVzdGVkUG9zaXRp
b24gPT0gY3VycmVudFBvc2l0aW9uICYmIGFkanVzdGVkUG9zaXRpb24gPT0gc2Nyb2xsYWJsZUFy
ZWEoKS5zY3JvbGxQb3NpdGlvbigpICYmICFzY3JvbGxhYmxlQXJlYSgpLnNjcm9sbE9yaWdpbkNo
YW5nZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9zY3JvbGxBbmltYXRpb24t
PnNldEN1cnJlbnRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKTsKKyAgICBtX3Njcm9sbEFuaW1h
dGlvbi0+c3RvcCgpOwogICAgIG1fY3VycmVudFBvc2l0aW9uID0gYWRqdXN0ZWRQb3NpdGlvbjsK
ICAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoYWRqdXN0ZWRQb3NpdGlvbiAtIGN1cnJlbnRQb3Np
dGlvbik7CiAgICAgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7CkBAIC0x
NDIsOCArMTI2LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhB
bmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3UG9zaXRpb24KICAgICBpZiAoIXBvc2l0aW9u
Q2hhbmdlZCAmJiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxPcmlnaW5DaGFuZ2VkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9z
aXRpb24obV9jdXJyZW50UG9zaXRpb24pOwotICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zY3JvbGwo
bmV3UG9zaXRpb24pOworICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xs
VG9EZXN0aW5hdGlvbihtX2N1cnJlbnRQb3NpdGlvbiwgbmV3UG9zaXRpb24pOwogICAgIHNjcm9s
bGFibGVBcmVhKCkuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6
OkluTm9uTmF0aXZlQW5pbWF0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE1Miw3ICsx
MzUsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpyZXRhcmdldFJ1bm5pbmdBbmltYXRpb24oY29u
c3QgRmxvYXRQb2ludCYgbmV3UG9zaXRpb24pCiB7CiAgICAgQVNTRVJUKHNjcm9sbGFibGVBcmVh
KCkuY3VycmVudFNjcm9sbEJlaGF2aW9yU3RhdHVzKCkgPT0gU2Nyb2xsQmVoYXZpb3JTdGF0dXM6
OkluTm9uTmF0aXZlQW5pbWF0aW9uKTsKICAgICBBU1NFUlQobV9zY3JvbGxBbmltYXRpb24tPmlz
QWN0aXZlKCkpOwotICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zY3JvbGwobmV3UG9zaXRpb24pOwor
ICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbiht
X2N1cnJlbnRQb3NpdGlvbiwgbmV3UG9zaXRpb24pOwogfQogCiBGbG9hdFBvaW50IFNjcm9sbEFu
aW1hdG9yOjpvZmZzZXRGcm9tUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCkBA
IC0zNzUsMjIgKzM1OCwyMiBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpjYW5jZWxBbmltYXRpb25z
KCkKIAogdm9pZCBTY3JvbGxBbmltYXRvcjo6Y29udGVudHNSZXNpemVkKCkgY29uc3QKIHsKLSAg
ICBtX3Njcm9sbEFuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKKyAgICBtX3Njcm9s
bEFuaW1hdGlvbi0+dXBkYXRlU2Nyb2xsRXh0ZW50cygpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1h
dG9yOjp3aWxsRW5kTGl2ZVJlc2l6ZSgpCiB7Ci0gICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0
ZVZpc2libGVMZW5ndGhzKCk7CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0ZVNjcm9sbEV4
dGVudHMoKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvcjo6ZGlkQWRkVmVydGljYWxTY3JvbGxi
YXIoU2Nyb2xsYmFyKikKIHsKLSAgICBtX3Njcm9sbEFuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxl
bmd0aHMoKTsKKyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+dXBkYXRlU2Nyb2xsRXh0ZW50cygpOwog
fQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9s
bGJhciopCiB7Ci0gICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7
CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0ZVNjcm9sbEV4dGVudHMoKTsKIH0KIAogRmxv
YXRQb2ludCBTY3JvbGxBbmltYXRvcjo6YWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5l
ZWRlZChjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQsIFNjcm9sbFNuYXBQb2ludFNlbGVjdGlvbk1l
dGhvZCBtZXRob2QpCkBAIC00MjIsNSArNDA1LDI3IEBAIGZsb2F0IFNjcm9sbEFuaW1hdG9yOjph
ZGp1c3RTY3JvbGxPZmZzZXRGb3JTbmFwcGluZ0lmTmVlZGVkKFNjcm9sbEV2ZW50QXhpcyBheGlz
CiAgICAgcmV0dXJuIG1fc2Nyb2xsQ29udHJvbGxlci5hZGp1c3RTY3JvbGxEZXN0aW5hdGlvbihh
eGlzLCBuZXdPZmZzZXQsIHZlbG9jaXR5SW5TY3JvbGxBeGlzLCBvcmlnaW5hbE9mZnNldCk7CiB9
CiAKK3ZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxB
bmltYXRpb24mLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBGbG9hdFNpemUg
ZGVsdGEgPSBwb3NpdGlvbiAtIG1fY3VycmVudFBvc2l0aW9uOworICAgIG1fY3VycmVudFBvc2l0
aW9uID0gcG9zaXRpb247CisgICAgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKGRlbHRhKTsKKyAgICB1
cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JPZmZzZXQoKTsKK30KKwordm9pZCBTY3JvbGxB
bmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9sbEFuaW1hdGlvbiYpCit7CisgICAg
bV9zY3JvbGxhYmxlQXJlYS5zZXRTY3JvbGxCZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0
YXR1czo6Tm90SW5BbmltYXRpb24pOworfQorCitTY3JvbGxFeHRlbnRzIFNjcm9sbEFuaW1hdG9y
OjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpCit7CisgICAgcmV0
dXJuIHsKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwK
KyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSwKKyAgICAg
ICAgbV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpCisgICAgfTsKK30KKwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApp
bmRleCBlYmI0NzcxMTFlMDcwOTU0Yjg1YWRjNWI5NTY1YjhhMjMzNzkxOTYzLi5hMTFlOTBlMTFk
NzU5NmY0MWU2Mjg4MjkyNzU1NTFkNzJkZTViZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9p
bnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJTY3JvbGxB
bmltYXRpb24uaCIKICNpbmNsdWRlICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCkBAIC00
NCwxNCArNDUsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxvYXRQb2ludDsKIGNs
YXNzIEtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I7CiBjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7
Ci1jbGFzcyBTY3JvbGxBbmltYXRpb247CitjbGFzcyBTY3JvbGxBbmltYXRpb25TbW9vdGg7CiBj
bGFzcyBTY3JvbGxhYmxlQXJlYTsKIGNsYXNzIFNjcm9sbGJhcjsKIGNsYXNzIFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjsKIAogY2xhc3MgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJUaW1lcjsKIAot
Y2xhc3MgU2Nyb2xsQW5pbWF0b3IgOiBwcml2YXRlIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
Q2xpZW50IHsKK2NsYXNzIFNjcm9sbEFuaW1hdG9yIDogcHJpdmF0ZSBTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlckNsaWVudCwgcHVibGljIFNjcm9sbEFuaW1hdGlvbkNsaWVudCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxTY3JvbGxBbmltYXRvcj4gY3JlYXRlKFNjcm9sbGFibGVBcmVhJik7CkBAIC0xMzMsNiArMTM0
LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBob3Jpem9udGFsU2Nyb2xsYmFyU3Rh
dGVGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogICAgIHZpcnR1
YWwgU3RyaW5nIHZlcnRpY2FsU2Nyb2xsYmFyU3RhdGVGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1
cm4gZW1wdHlTdHJpbmcoKTsgfQogCisgICAgLy8gU2Nyb2xsQW5pbWF0aW9uQ2xpZW50CisgICAg
dm9pZCBzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxv
YXRQb2ludCYgY3VycmVudFBvc2l0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbEFuaW1h
dGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSBvdmVycmlkZTsKKyAgICBTY3JvbGxFeHRlbnRz
IHNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgb3ZlcnJpZGU7CisK
ICAgICB2b2lkIHNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihSZWZQdHI8V2hlZWxFdmVudFRlc3RN
b25pdG9yPiYmIHRlc3RNb25pdG9yKSB7IG1fd2hlZWxFdmVudFRlc3RNb25pdG9yID0gdGVzdE1v
bml0b3I7IH0KIAogICAgIEZsb2F0UG9pbnQgYWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJ
Zk5lZWRlZChjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQsIFNjcm9sbFNuYXBQb2ludFNlbGVjdGlv
bk1ldGhvZCk7CkBAIC0xNzksNyArMTg1LDcgQEAgcHJvdGVjdGVkOgogICAgIFRpbWVyIG1fc2Ny
b2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyOwogICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50UG9z
aXRpb247CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uPiBtX3Njcm9sbEFu
aW1hdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPiBtX3Nj
cm9sbEFuaW1hdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8S2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvcj4gbV9rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3Bw
CmluZGV4IDg5MDg0MmRjNjYzZjYzOTk1NzJmODkzMTQ1ODljYjI3MjczZDliODIuLjc4MjM4MzVj
NDE1ODk3ZTk3NTBmZTQyYzdkZWFiODUzNjJhYzUzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKQEAg
LTQ4LDE2ICs0OCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5p
bWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsCiAKIFNjcm9sbEFuaW1hdG9y
R2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSkKICAgICA6IFNjcm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQorICAgICwgbV9raW5l
dGljQW5pbWF0aW9uKG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oKnRoaXMpKQog
ICAgICwgbV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXIoKnRoaXMsICZTY3JvbGxBbmlt
YXRvckdlbmVyaWM6Om92ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lckZpcmVkKQogewotICAg
IG1fa2luZXRpY0FuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4o
Ci0gICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewotICAgICAgICAgICAgcmV0dXJu
IHsgbV9zY3JvbGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxl
QXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6
ZSgpIH07Ci0gICAgICAgIH0sCi0gICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24p
IHsKLSAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9z
aXRpb24pOwotICAgICAgICAgICAgdXBkYXRlUG9zaXRpb24oV1RGTW92ZShwb3NpdGlvbikpOwot
ICAgICAgICB9KTsKIH0KIAogU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp+U2Nyb2xsQW5pbWF0b3JH
ZW5lcmljKCkgPSBkZWZhdWx0OwpAQCAtNzYsMTIgKzY5LDEyIEBAIGJvb2wgU2Nyb2xsQW5pbWF0
b3JHZW5lcmljOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZl
bnQpCiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5hcHBlbmRUb1Njcm9sbEhpc3RvcnkoZXZlbnQp
OwogCiAgICAgaWYgKGV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7Ci0gICAgICAg
IG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnQobV9jdXJyZW50UG9zaXRpb24sIG1fa2luZXRpY0Fu
aW1hdGlvbi0+Y29tcHV0ZVZlbG9jaXR5KCksIG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNj
cm9sbGJhcigpLCBtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCkpOworICAgICAg
ICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9j
aXR5KG1fY3VycmVudFBvc2l0aW9uLCBtX2tpbmV0aWNBbmltYXRpb24tPmNvbXB1dGVWZWxvY2l0
eSgpLCBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKSwgbV9zY3JvbGxhYmxl
QXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIGlmIChldmVudC5pc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkpIHsKICAgICAg
ICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKLSAgICAgICAgbV9r
aW5ldGljQW5pbWF0aW9uLT5zdGFydChtX2N1cnJlbnRQb3NpdGlvbiwgZXZlbnQuc3dpcGVWZWxv
Y2l0eSgpLCBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIoKSwgbV9zY3JvbGxh
YmxlQXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpKTsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9u
LT5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShtX2N1cnJlbnRQb3NpdGlv
biwgZXZlbnQuc3dpcGVWZWxvY2l0eSgpLCBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3Jv
bGxiYXIoKSwgbV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCkBAIC04OSwxMCArODIsMTAgQEAgYm9vbCBTY3Jv
bGxBbmltYXRvckdlbmVyaWM6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiBldmVudCkKICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQo
ZXZlbnQpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6dXBkYXRlUG9zaXRpb24o
RmxvYXRQb2ludCYmIHBvc2l0aW9uKQordm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnVwZGF0
ZVBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQogewogICAgIEZsb2F0U2l6ZSBk
ZWx0YSA9IHBvc2l0aW9uIC0gbV9jdXJyZW50UG9zaXRpb247Ci0gICAgbV9jdXJyZW50UG9zaXRp
b24gPSBXVEZNb3ZlKHBvc2l0aW9uKTsKKyAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9u
OwogICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7CiAgICAgdXBkYXRlQWN0aXZlU2Ny
b2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7CiB9CkBAIC0yODgsNSArMjgxLDE4IEBAIHZvaWQgU2Ny
b2xsQW5pbWF0b3JHZW5lcmljOjpsb2NrT3ZlcmxheVNjcm9sbGJhclN0YXRlVG9IaWRkZW4oYm9v
bCBzaG91bGRMb2NrU3RhCiAgICAgfQogfQogCisvLyBGSVhNRTogQ2FuIHdlIGp1c3QgdXNlIHRo
ZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9uPwordm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6
OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mIGFuaW1hdGlvbiwgY29u
c3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCit7CisgICAgaWYgKCZhbmltYXRpb24gPT0gbV9raW5l
dGljQW5pbWF0aW9uLmdldCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiBDbGFyaWZ5IGhvdyBhbmlt
YXRpb25zIGludGVyYWN0LiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgbW9yZSB0aGFuIG9uZSBhY3Rp
dmUgYXQgYSB0aW1lLgorICAgICAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c3RvcCgpOworICAgICAg
ICB1cGRhdGVQb3NpdGlvbihwb3NpdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKGFuaW1hdGlvbiwgcG9z
aXRpb24pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCmluZGV4
IGUwNDZjNTMxYmI4NGMyYWNmZjVlODk0NjU1NmRkYzExMjVjOThhZjMuLmY0ODhmMmY1YTE5N2I3
NDYyNTRiZDIwNzA1ZjhkODRkMjI5MTAyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaApAQCAtNjEsNyArNjEs
MTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeUNvbnRlbnRBcmVhU2Nyb2xsZWQoY29uc3Qg
RmxvYXRTaXplJiBkZWx0YSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2NrT3ZlcmxheVNjcm9sbGJh
clN0YXRlVG9IaWRkZW4oYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHVwZGF0ZVBvc2l0aW9u
KEZsb2F0UG9pbnQmJik7CisgICAgLy8gU2Nyb2xsQW5pbWF0aW9uQ2xpZW50CisgICAgdm9pZCBz
Y3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxvYXRQb2lu
dCYgY3VycmVudFBvc2l0aW9uKSBvdmVycmlkZTsKKworICAgIHZvaWQgdXBkYXRlUG9zaXRpb24o
Y29uc3QgRmxvYXRQb2ludCYpOwogCiAgICAgdm9pZCBvdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9u
VGltZXJGaXJlZCgpOwogICAgIHZvaWQgc2hvd092ZXJsYXlTY3JvbGxiYXJzKCk7Cg==
</data>
<flag name="commit-queue"
          id="461816"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438442</attachid>
            <date>2021-09-16 21:30:29 -0700</date>
            <delta_ts>2021-09-16 21:40:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230385-20210916213028.patch</filename>
            <type>text/plain</type>
            <size>47081</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjMyYWZjNTY3ZmNmYTQ4
NmIxNWJiZTUxZTFkZjhjZjg5MDQ0Yjg0Yy4uNmI5OGU2OWNiOGJmZWMzMjEzMjE0ODRjZjY2YTI1
YWQ5NGVkMGNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTA5LTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2Nyb2xs
QW5pbWF0aW9uIGEgbGl0dGxlIG1vcmUgZ2VuZXJpYworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMzg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlcGFyZSBmb3IgbmV3IFNjcm9sbEFuaW1hdGlvbiBz
dWJjbGFzc2VzIGJ5IG1ha2luZyBpdCBhIGxpdHRsZSBtb3JlIGdlbmVyaWMuIFJhdGhlcgorICAg
ICAgICB0aGFuIHRoZSBmdW5jdGlvbiBjYWxsYmFja3MsIHVzZSBhIHZpcnR1YWwgY2xpZW50IGNs
YXNzLCBpbXBsZW1lbnRlZCBieSBTY3JvbGxBbmltYXRvcgorICAgICAgICBhbmQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuIFJlbW92ZSB0aGUgZ2VuZXJpYyAnc2Ny
b2xsJyBtZXRob2RzCisgICAgICAgIGZyb20gdGhlIGJhc2UgY2xhc3MsIHNpbmNlIHRoZXkgb25s
eSBhcHBseSB0byBTY3JvbGxBbmltYXRpb25TbW9vdGggKGNsaWVudHMgbmVlZAorICAgICAgICB0
byBrZWVwIGRlcml2ZWQgY2xhc3MgcG9pbnRlcnMsIGFuZCBtb3N0IGFscmVhZHkgZG8pLgorICAg
ICAgICAKKyAgICAgICAgUmVtb3ZlIGFtYmlndWl0eSBhcm91bmQgdGhlIGN1cnJlbnRQb3NpdGlv
biBieSByZXF1aXJpbmcgaXQgZm9yIGV2ZXJ5ICdzdGFydCcgY2FsbC4KKyAgICAgICAgUmVtb3Zl
IGFtYmlndWl0eSBhcm91bmQgc2V0Q3VycmVudFBvc2l0aW9uKCkgYnkgcmVtb3ZpbmcgaXQuIENs
aWVudHMganVzdCBjYWxsIHN0b3AoKS4KKyAgICAgICAgCisgICAgICAgIERvIHBlci1heGlzIHNl
dHVwIHdoZW4gc3RhcnRpbmcgYW5pbWF0aW9ucywgbm90IHdoZW4gY3JlYXRpbmcgb25lLCBzbyB0
aGUgYW5pbWF0aW9uIHN0YXJ0cworICAgICAgICBvdXQgc3RhdGVsZXNzLgorCisgICAgICAgICog
U291cmNlcy50eHQ6IEJ1aWxkIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwIGZv
ciBtYWNPUywgbW9zdGx5IHRvIGNhdGNoCisgICAgICAgIGJ1aWxkIGVycm9ycyAoaXQncyBjdXJy
ZW50bHkgdW51c2VkKS4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6cmVzZXRDdXJyZW50UG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1h
dGlvblNtb290aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9u
RGlkVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmltYXRpb25EaWRFbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEV4dGVu
dHNGb3JBbmltYXRpb24pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6
U2Nyb2xsQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6dXBk
YXRlU2Nyb2xsRXh0ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OnNl
cnZpY2VBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uOjp+U2Ny
b2xsQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlv
bjo6c2Nyb2xsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6
dXBkYXRlVmlzaWJsZUxlbmd0aHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0aW9uOjpzZXRDdXJyZW50UG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0aW9uS2luZXRpYzo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRp
YWxWZWxvY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjph
bmltYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OnN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25LaW5ldGljLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0
aW9uU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3Rh
cnRBbmltYXRlZFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9v
dGg6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRpb25TbW9vdGg6OnVwZGF0ZVNjcm9sbEV4dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjppbml0aWFsaXplQXhlc0RhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRpb25UaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6UGVyQXhpc0RhdGE6OlBlckF4aXNE
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6
c2Nyb2xsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290
aDo6dXBkYXRlVmlzaWJsZUxlbmd0aHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0aW9uU21vb3RoOjpzZXRDdXJyZW50UG9zaXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpT
Y3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9uV2l0
aG91dEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
VG9Qb3NpdGlvbldpdGhBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OnJldGFyZ2V0UnVubmluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvcjo6Y29udGVudHNSZXNpemVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yOjp3aWxsRW5kTGl2ZVJlc2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvcjo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3I6OmRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlkRW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKToKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptX2tleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdl
bmVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoYW5kbGVX
aGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6dXBk
YXRlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpz
Y3JvbGxBbmltYXRpb25EaWRVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmg6CisKIDIwMjEtMDktMTYgIFR5bGVyIFdpbGNvY2sgPHR3aWxj
by5vQHByb3Rvbm1haWwuY29tPiBhbmQgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIGZvbnQtd2VpZ2h0IHNob3VsZCBhbHdheXMgc2VyaWFsaXplIGFz
IGEgbnVtYmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJiODRiYWE1OTU0NWMzYTNmMjQ0YzVmMjJmZWZl
ODIzMGZiZDcwZjIuLjc0OWZmY2IyODRmZThkOWFiZjhmZWMxNzQ4NzZmNGIzY2ZiY2VkZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0xODExLDYgKzE4MTEsNyBAQCBwbGF0Zm9ybS9SZWZlcnJlclBvbGlj
eS5jcHAKIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKIHBsYXRmb3JtL1J1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKIHBsYXRmb3JtL1NTTEtleUdlbmVyYXRvci5jcHAKK3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguY3BwCiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKIHBsYXRmb3JtL1Njcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAppbmRleCBlMjIyZjY2
YjE1NmE4YjdmMjZiNWY5OGQ2NmU5ZDdhY2NhM2Q0ZDA2Li45ZGZkOGI2MWI0YWNiNDU2ZDNkYzBh
NGIxYjAwNjRhNDFiOGMzMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RL
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtNjIsNyArNjIsNiBA
QCBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5jcHAK
IHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lO
b2RlLmNwcAogCi1wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAogcGxhdGZvcm0v
VXNlckFnZW50UXVpcmtzLmNwcAogCiBwbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1lQWR3
YWl0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKaW5kZXggYjEwYzFlY2U1MjA3NWI3NTM1ZGE1MWMy
Y2MzMTZkYzkzNDNmZDA4MS4uOGRhZDhjNzFjOGZlYTJhYmQzZjE5MTljMDRlOWRhMjc2OTRkODBi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlc1dQRS50eHQKQEAgLTU4LDcgKzU4LDYgQEAgcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAogcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKIAotcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5j
cHAKIAogcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzc1
ODQzMDYxNzdkODY1YjQ5ZTE5YjdlMDM5ZGVkZjUwMGYxM2Q2ZC4uZTNiODJiNmQxODFiOWI2ZDRh
YTNjNGZkY2NjYzUzY2U5ZjhlOGZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzUyLDYgKzM1Miw3IEBACiAJCTBGOTRGMzdF
MjM2NjE2MjYwMDNBQTVDNyAvKiBTdHlsZVJ1bGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk0RjM3QzIzNjYxMTMxMDAzQUE1QzcgLyogU3R5
bGVSdWxlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGOURBQTBGMUZEMUM2NkEwMDc5QzVCMiAvKiBET01HQ091dHB1dENvbnN0cmFpbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOURBQTBF
MUZEMUM2NjQwMDc5QzVCMiAvKiBET01HQ091dHB1dENvbnN0cmFpbnQuaCAqLzsgfTsKIAkJMEZB
MjREN0ExNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkEyNEQ3ODE2MkRGOTE5MDBB
M0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkE2MUIwRTI2RjQzMjEzMDAxQUFEQjYgLyogU2Ny
b2xsQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkE2MUIwQzI2RjQzMjEyMDAxQUFEQjYgLyogU2Nyb2xsQW5pbWF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCNjI1MkYxOERF
MUIxNTAwQTA3QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI2MjUyRDE4REUxQjE1MDBBMDdDMDUgLyogR2Vv
bWV0cnlVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRkI4ODkwRjE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlj
a3lOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkI4ODkwRDE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCQjVGQkUy
NjA5OTFEMjAwNTQ1NzJDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkI1RkJEMjYwOTVBOUMw
MDU0NTcyQyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYzMjQsNiArNjMyNSw3IEBACiAJ
CTBGQTBBMEU1MjNBRUFBMzUwMDBFRUI5NCAvKiBkaWFsb2cuY3NzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5j
c3M7IHBhdGggPSBkaWFsb2cuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEy
NEQ3NzE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAgLyog
R3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R3JhcGhpY3NMYXllclVwZGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZB
NjFCMEMyNkY0MzIxMjAwMUFBREI2IC8qIFNjcm9sbEFuaW1hdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZCMDY4OTQyNTI0M0I5MDAwMUU4RTc1IC8qIERpc3BsYXlUZXh0Qm94LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlUZXh0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZCMDY4OTYyNTI0M0I5MDAwMUU4RTc1IC8qIERpc3BsYXlUZXh0Qm94
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlUZXh0Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGQjYyNTJDMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9tZXRyeVV0aWxpdGll
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODA0Myw2ICsyODA0NSw3IEBA
CiAJCQkJNDExMjIzQjgyNjAyNDRGRTAwQjBBMEI2IC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyLmggKi8sCiAJCQkJQkM4QUUzNEMxMkVBMDk2QTAwRUIzQUU2IC8qIFNjcm9sbGFi
bGVBcmVhLmNwcCAqLywKIAkJCQlCQzhBRTM0RDEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJs
ZUFyZWEuaCAqLywKKwkJCQkwRkE2MUIwQzI2RjQzMjEyMDAxQUFEQjYgLyogU2Nyb2xsQW5pbWF0
aW9uLmggKi8sCiAJCQkJMEZDNjkyQkMyNTdDMEY0MTAwOThFM0Y5IC8qIFNjcm9sbEFuaW1hdGlv
bktpbmV0aWMuY3BwICovLAogCQkJCTBGQzY5MkJBMjU3QzBGNDAwMDk4RTNGOSAvKiBTY3JvbGxB
bmltYXRpb25LaW5ldGljLmggKi8sCiAJCQkJMEZDNjkyQkQyNTdDMEY0MTAwOThFM0Y5IC8qIFNj
cm9sbEFuaW1hdGlvblNtb290aC5jcHAgKi8sCkBAIC0zMzEzMiw3ICszMzEzNSw2IEBACiAJCQkJ
QkM2OTMyNzQwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjUyRkJCQkMwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9tLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0NjBDQkYzNjFENEJDRDBFMDA5MkU4OEUgLyogSlNET01XaW5k
b3dQcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTBCQ0Y1NjI2RjBDRDhDMDA0MEIx
MjQgLyogUlRDTG9jYWxTZXNzaW9uRGVzY3JpcHRpb25Jbml0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2NUUwRTk0NDExMzNDODlGMDBCNENCMTAgLyogSlNET01XcmFwcGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QzQ1QzlEMzFFM0ZDQkQ3MDBBQUI1NTggLyogSlNET01XcmFwcGVyQ2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzQTgwNjFFMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0RvdWJsZVJh
bmdlLmggaW4gSGVhZGVycyAqLywKQEAgLTM0NzQyLDYgKzM0NzQ0LDcgQEAKIAkJCQkwN0FCOTk2
QjE4REEzQzAxMDAxODc3MUUgLyogUlRDSWNlU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MTM1OTEwODFFN0REQzczMDBGMzA2MzAgLyogUlRDSWNlVHJhbnNwb3J0UG9saWN5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMTM1OTEwOTFFN0REQzczMDBGMzA2MzAgLyogUlRDSWNlVHJhbnNwb3J0
U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMEJDRjU2MjZGMENEOEMwMDQwQjEyNCAvKiBS
VENMb2NhbFNlc3Npb25EZXNjcmlwdGlvbkluaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQzE0
QkM2MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3JrTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDczNzk0RkUxOUY1ODY0RTAwRTVBMDQ1IC8qIFJUQ05vdGlmaWVyc01vY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3Mzc5NERFMTlFRTJDNTIwMEU1QTA0NSAvKiBSVENPZmZlckFuc3dl
ck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ4MTQsNiArMzQ4MTcsNyBAQAogCQkJCTE0
MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzhBRTM0RjEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFyZWEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVEOTI1QjY4MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxB
bGlnbm1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTYxQjBFMjZGNDMyMTMwMDFBQURCNiAv
KiBTY3JvbGxBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNBM0JGNjdFMTBEOTlCQUUw
MEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNzc0ODAx
Mzc4Qjc3MjAwOURBNzZBIC8qIFNjcm9sbEFuaW1hdG9ySU9TLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0FFMUZBNzEyOTM5REI3MDA0Q0IwMjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVOaWNvc2lhLmNwcAppbmRleCA2OWViMTExNGMxODAyZWE1MTU5ZDg0ZDk4YjdmMzFm
ZmVhMGNjNTk0Li4zZjgzNmU0YWM3NmNmOTRmYmMxODA1ODY4Yzg1MzM2Nzc0YWY0YTI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVO
aWNvc2lhLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhOjpyZXNldEN1cnJlbnRQb3NpdGlvbigpCiB7CiAjaWYgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCiAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBt
X3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHNjcm9sbGluZ05vZGUoKS5jdXJy
ZW50U2Nyb2xsUG9zaXRpb24oKSk7CisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9wKCk7
CiAjZW5kaWYKIH0KIApAQCAtNzksMTggKzc5LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpCiAg
ICAgaWYgKG1fa2luZXRpY0FuaW1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9raW5l
dGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigKLSAgICAg
ICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7Ci0gICAgICAgICAgICByZXR1cm4geyBJbnRQ
b2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3Np
dGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKLSAgICAgICAgfSwKLSAg
ICAgICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewotI2lmIEVOQUJMRShTTU9PVEhf
U0NST0xMSU5HKQotICAgICAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICAg
ICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOwot
I2VuZGlmCi0gICAgICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY3JlYXRlVXBkYXRlU2NvcGUo
KTsKLSAgICAgICAgICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxUbyhwb3NpdGlvbik7Ci0gICAg
ICAgIH0pOworICAgIG1fa2luZXRpY0FuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0
aW9uS2luZXRpYz4oKnRoaXMpOwogfQogI2VuZGlmCiAKQEAgLTEwMCwxNiArODksNyBAQCB2b2lk
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjplbnN1cmVTY3JvbGxB
bmltYXRpb25TbW9vdGgoKQogICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlv
blNtb290aD4oCi0gICAgICAgIFt0aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewotICAgICAgICAg
ICAgcmV0dXJuIHsgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRQb2ludCht
YXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpIH07
Ci0gICAgICAgIH0sCi0gICAgICAgIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLAotICAgICAgICBb
dGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIHVwZGF0ZVNj
b3BlID0gY3JlYXRlVXBkYXRlU2NvcGUoKTsKLSAgICAgICAgICAgIHNjcm9sbGluZ05vZGUoKS5z
Y3JvbGxUbyhwb3NpdGlvbik7Ci0gICAgICAgIH0sCi0gICAgICAgIFtdIHsgfSk7CisgICAgbV9z
bW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oKnRoaXMp
OwogfQogI2VuZGlmCiAKQEAgLTEyNSwxMiArMTA1LDEyIEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jl
c3VsdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hl
ZWxFCiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5hcHBlbmRUb1Njcm9sbEhpc3Rvcnkod2hlZWxF
dmVudCk7CiAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7CiAgICAgaWYgKHdoZWVsRXZl
bnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkpIHsKLSAgICAgICAgbV9raW5ldGljQW5pbWF0
aW9uLT5zdGFydChjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwgbV9raW5ldGljQW5pbWF0aW9uLT5j
b21wdXRlVmVsb2NpdHkoKSwgY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIsIGNhbkhhdmVWZXJ0
aWNhbFNjcm9sbGJhcik7CisgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnRBbmltYXRl
ZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIG1fa2lu
ZXRpY0FuaW1hdGlvbi0+Y29tcHV0ZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xs
YmFyLCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIpOwogICAgICAgICBtX2tpbmV0aWNBbmltYXRp
b24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwogICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRs
aW5nUmVzdWx0OjpoYW5kbGVkKCk7CiAgICAgfQogICAgIGlmICh3aGVlbEV2ZW50LmlzVHJhbnNp
dGlvbmluZ1RvTW9tZW50dW1TY3JvbGwoKSkgewotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24t
PnN0YXJ0KGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCB3aGVlbEV2ZW50LnN3aXBlVmVsb2NpdHko
KSwgY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIsIGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcik7
CisgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0
aWFsVmVsb2NpdHkoY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIHdoZWVsRXZlbnQuc3dpcGVWZWxv
Y2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhciwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xs
YmFyKTsKICAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsK
ICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwogICAg
IH0KQEAgLTE4Miw4ICsxNjIsOCBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmhhbmRsZVdoZWVsRQogI2lmIEVOQUJM
RShTTU9PVEhfU0NST0xMSU5HKQogICAgIGlmIChtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCAmJiAh
d2hlZWxFdmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpIHsKICAgICAgICAgZW5zdXJl
U2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7Ci0gICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zY3Jv
bGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgMSwgZGVsdGFYKTsKLSAgICAg
ICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwgU2Nyb2xsQnlQ
aXhlbCwgMSwgZGVsdGFZKTsKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0YXJ0QW5pbWF0
ZWRTY3JvbGwoSG9yaXpvbnRhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgY3VycmVudFNjcm9s
bFBvc2l0aW9uKCksIDEsIGRlbHRhWCk7CisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdGFy
dEFuaW1hdGVkU2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCBjdXJyZW50
U2Nyb2xsUG9zaXRpb24oKSwgMSwgZGVsdGFZKTsKICAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRI
YW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwogICAgIH0KICNlbmRpZgpAQCAtMjE2LDYgKzE5Niwz
MSBAQCBmbG9hdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6cGFn
ZVNjYWxlRmFjdG9yKCkKICAgICAgICAgZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSgpKS5mcmFtZVNjYWxlRmFjdG9yKCkgOiAxLjsKIH0KIAor
dm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5p
bWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBGbG9hdFBv
aW50JiBwb3NpdGlvbikKK3sKKyNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyAgICBpZiAo
JmFuaW1hdGlvbiA9PSBtX2tpbmV0aWNBbmltYXRpb24uZ2V0KCkpIHsKKyAgICAgICAgaWYgKG1f
c21vb3RoQW5pbWF0aW9uKQorICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3AoKTsK
KyAgICB9CisjZW5kaWYKKyAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY3JlYXRlVXBkYXRlU2NvcGUo
KTsKKyAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsVG8ocG9zaXRpb24pOworfQorCit2b2lkIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmltYXRpb25E
aWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikKK3sKK30KKworU2Nyb2xsRXh0ZW50cyBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlv
bihTY3JvbGxBbmltYXRpb24mKQoreworICAgIHJldHVybiB7CisgICAgICAgIEludFBvaW50KG1p
bmltdW1TY3JvbGxQb3NpdGlvbigpKSwKKyAgICAgICAgSW50UG9pbnQobWF4aW11bVNjcm9sbFBv
c2l0aW9uKCkpLAorICAgICAgICBJbnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKQorICAgIH07
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oCmluZGV4IGQxYWQyNzNhYWJmZjEwMGFl
ZjdiZDkwNTAyZDJlYWE5NmMxYmI5ZDMuLjA4ODk5MDI3NWE0OWVkOWI5OWYxNGYwNTA5YjI5MGZk
YmMxZDM0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lmIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQogCisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9u
LmgiCiAjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJTY3JvbGxp
bmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgIlRocmVhZGVkU2Nyb2xs
aW5nVHJlZS5oIgpAQCAtNDQsNyArNDUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhIDogcHVibGljIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUgeworY2xhc3MgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZSwgcHVibGljIFNjcm9sbEFuaW1hdGlvbkNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEoU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmLCBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCk7CiAg
ICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEoKTsK
QEAgLTY2LDYgKzY3LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRp
b25TbW9vdGgoKTsKICNlbmRpZgogCisgICAgLy8gU2Nyb2xsQW5pbWF0aW9uQ2xpZW50CisgICAg
dm9pZCBzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxv
YXRQb2ludCYgY3VycmVudFBvc2l0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHNjcm9sbEFuaW1hdGlv
bkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSBmaW5hbDsKKyAgICBTY3JvbGxFeHRlbnRzIHNjcm9s
bEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7CisKICNpZiBFTkFC
TEUoS0lORVRJQ19TQ1JPTExJTkcpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlv
bktpbmV0aWM+IG1fa2luZXRpY0FuaW1hdGlvbjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb24uaAppbmRleCAwMDRiYmM2YjYzODAyYmMwZTk5OWI5NmI2ZGQ2
MzUyMmZlODNjNzZlLi5mZDNlNGY1ZDcwMjMzN2Q5N2YwY2Y3YWI3ODg0MTMzNmExM2YxYTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaApAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE2ICsyNCwxNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgU2Nyb2xsQW5pbWF0aW9uX2gKLSNkZWZpbmUg
U2Nyb2xsQW5pbWF0aW9uX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMu
aCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZsb2F0UG9pbnQ7Ci1jbGFzcyBTY3JvbGxhYmxlQXJlYTsKLWVudW0gY2xhc3MgU2Ny
b2xsQ2xhbXBpbmcgOiBib29sOworY2xhc3MgU2Nyb2xsQW5pbWF0aW9uOwogCiBzdHJ1Y3QgU2Ny
b2xsRXh0ZW50cyB7CiAgICAgU2Nyb2xsUG9zaXRpb24gbWluaW11bVNjcm9sbFBvc2l0aW9uOwpA
QCAtNDAsMTkgKzQwLDMyIEBAIHN0cnVjdCBTY3JvbGxFeHRlbnRzIHsKICAgICBJbnRTaXplIHZp
c2libGVTaXplOwogfTsKIAorY2xhc3MgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25DbGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNv
bnN0IEZsb2F0UG9pbnQmIGN1cnJlbnRQb3NpdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikgPSAwOworICAgIHZpcnR1YWwg
U2Nyb2xsRXh0ZW50cyBzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYp
ID0gMDsKK307CisKIGNsYXNzIFNjcm9sbEFuaW1hdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uKCkgeyB9Owot
ICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51
bGFyaXR5LCBmbG9hdCAvKiBzdGVwICovLCBmbG9hdCAvKiBtdWx0aXBsaWVyICovKSB7IHJldHVy
biB0cnVlOyB9OwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgRmxvYXRQb2ludCYpIHsg
fTsKKyAgICBTY3JvbGxBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCisg
ICAgICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgIHsgfQorICAgIHZpcnR1YWwgflNjcm9sbEFu
aW1hdGlvbigpID0gZGVmYXVsdDsKKwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVWaXNpYmxlTGVuZ3RocygpIHsgfTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0Q3VycmVudFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSB7IH07Ci0gICAgdmlydHVh
bCB2b2lkIHNlcnZpY2VBbmltYXRpb24oKSB7IH07CiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxFeHRlbnRzKCkgeyB9
OworICAgIAorICAgIC8vIEZJWE1FOiBOby1vcC4gTmVlZCB0byB1c2UgdGhpcyBpbnN0ZWFkIG9m
IHN1YmNsYXNzZXMgaGF2aW5nIHRpbWVycy4KKyAgICB2aXJ0dWFsIHZvaWQgc2VydmljZUFuaW1h
dGlvbigpIHsgfTsKKworcHJvdGVjdGVkOgorICAgIFNjcm9sbEFuaW1hdGlvbkNsaWVudCYgbV9j
bGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBTY3JvbGxB
bmltYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25LaW5ldGljLmNwcAppbmRleCAyMThkYmFhMGU1ZTczZjEyMGU2NGE4Yjg4MWM3N2Q3YjcwYmFk
MWQzLi44ZTMyZWU4ZmIzNTE0MmRjNmI3NGQyZGRmMjJmMTVhNTBkZTNmMGEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcApAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMiw5ICsxMTMsOCBAQCBib29sIFNjcm9sbEFu
aW1hdGlvbktpbmV0aWM6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKFNlY29uZHMgdGltZURl
bHRhKQogICAgIHJldHVybiBtX3ZlbG9jaXR5OwogfQogCi1TY3JvbGxBbmltYXRpb25LaW5ldGlj
OjpTY3JvbGxBbmltYXRpb25LaW5ldGljKFNjcm9sbEV4dGVudHNDYWxsYmFjayYmIHNjcm9sbEV4
dGVudHNGdW5jdGlvbiwgTm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2smJiBub3RpZnlQb3Np
dGlvbkNoYW5nZWRGdW5jdGlvbikKLSAgICA6IG1fc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKFdURk1v
dmUoc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKSkKLSAgICAsIG1fbm90aWZ5UG9zaXRpb25DaGFuZ2Vk
RnVuY3Rpb24oV1RGTW92ZShub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikpCitTY3JvbGxB
bmltYXRpb25LaW5ldGljOjpTY3JvbGxBbmltYXRpb25LaW5ldGljKFNjcm9sbEFuaW1hdGlvbkNs
aWVudCYgY2xpZW50KQorICAgIDogU2Nyb2xsQW5pbWF0aW9uKGNsaWVudCkKICAgICAsIG1fYW5p
bWF0aW9uVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2Nyb2xsQW5pbWF0aW9uS2lu
ZXRpYzo6YW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQpA
QCAtMTY4LDcgKzE2OCw3IEBAIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6Y29t
cHV0ZVZlbG9jaXR5KCkKICAgICByZXR1cm4gRmxvYXRQb2ludChhY2N1bURlbHRhLngoKSAqIC0x
IC8gKGxhc3QgLSBmaXJzdCkudmFsdWUoKSwgYWNjdW1EZWx0YS55KCkgKiAtMSAvIChsYXN0IC0g
Zmlyc3QpLnZhbHVlKCkpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0
KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgdmVs
b2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKQorYm9vbCBTY3JvbGxBbmlt
YXRpb25LaW5ldGljOjpzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25z
dCBGbG9hdFBvaW50JiBpbml0aWFsUG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5
LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCkKIHsKICAgICBzdG9wKCk7CiAKQEAg
LTE3NiwxMSArMTc2LDExIEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnQoY29u
c3QgRmxvYXRQb2ludCYgaW5pdGlhbFBvc2l0aW9uLCBjb25zdCBGbG9hCiAgICAgICAgIG1fcG9z
aXRpb24gPSBpbml0aWFsUG9zaXRpb247CiAgICAgICAgIG1faG9yaXpvbnRhbERhdGEgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIG1fdmVydGljYWxEYXRhID0gc3RkOjpudWxsb3B0OwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBhdXRvIGRlbHRh
ID0gZGVsdGFUb05leHRGcmFtZSgpOwotICAgIGF1dG8gZXh0ZW50cyA9IG1fc2Nyb2xsRXh0ZW50
c0Z1bmN0aW9uKCk7CisgICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0Zv
ckFuaW1hdGlvbigqdGhpcyk7CiAKICAgICBhdXRvIGFjY3VtdWxhdGVWZWxvY2l0eSA9IFsmXShk
b3VibGUgdmVsb2NpdHksIHN0ZDo6b3B0aW9uYWw8UGVyQXhpc0RhdGE+IGF4aXNEYXRhKSAtPiBk
b3VibGUgewogICAgICAgICBpZiAoYXhpc0RhdGEgJiYgYXhpc0RhdGEudmFsdWUoKS5hbmltYXRl
U2Nyb2xsKGRlbHRhKSkgewpAQCAtMjE0LDYgKzIxNCw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYzo6c3RhcnQoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbFBvc2l0aW9uLCBjb25zdCBG
bG9hCiAgICAgbV9wb3NpdGlvbiA9IGluaXRpYWxQb3NpdGlvbjsKICAgICBtX3N0YXJ0VGltZSA9
IE1vbm90b25pY1RpbWU6Om5vdygpIC0gdGlja1RpbWUgLyAyLjsKICAgICBhbmltYXRpb25UaW1l
ckZpcmVkKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0aW9uS2lu
ZXRpYzo6YW5pbWF0aW9uVGltZXJGaXJlZCgpCkBAIC0yMzMsNyArMjM0LDcgQEAgdm9pZCBTY3Jv
bGxBbmltYXRpb25LaW5ldGljOjphbmltYXRpb25UaW1lckZpcmVkKCkKICAgICBkb3VibGUgeCA9
IG1faG9yaXpvbnRhbERhdGEgPyBtX2hvcml6b250YWxEYXRhLnZhbHVlKCkucG9zaXRpb24oKSA6
IG1fcG9zaXRpb24ueCgpOwogICAgIGRvdWJsZSB5ID0gbV92ZXJ0aWNhbERhdGEgPyBtX3ZlcnRp
Y2FsRGF0YS52YWx1ZSgpLnBvc2l0aW9uKCkgOiBtX3Bvc2l0aW9uLnkoKTsKICAgICBtX3Bvc2l0
aW9uID0gRmxvYXRQb2ludCh4LCB5KTsKLSAgICBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0
aW9uKEZsb2F0UG9pbnQobV9wb3NpdGlvbikpOworICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlv
bkRpZFVwZGF0ZSgqdGhpcywgRmxvYXRQb2ludChtX3Bvc2l0aW9uKSk7CiB9CiAKIFNlY29uZHMg
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6ZGVsdGFUb05leHRGcmFtZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKaW5kZXggZmM0ZmFiMWU5
ZjQzMWEzOGNhN2FiMWM2ZTk5NjJkOGNiYzFiYzZjNS4uNGQ4NDQ4ODU0Njk3MjBiN2ZjNzdiN2Jk
OTgxMmIyMGZjZjQzZjRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvbktpbmV0aWMuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU3LDI3
ICs1OCwyMyBAQCBwcml2YXRlOgogICAgIH07CiAKIHB1YmxpYzoKLSAgICB1c2luZyBTY3JvbGxF
eHRlbnRzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPFNjcm9sbEV4dGVudHModm9pZCk+OwotICAg
IHVzaW5nIE5vdGlmeVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lk
KEZsb2F0UG9pbnQmJik+OwotCi0gICAgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYyhTY3JvbGxFeHRl
bnRzQ2FsbGJhY2smJiwgTm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2smJik7CisgICAgU2Ny
b2xsQW5pbWF0aW9uS2luZXRpYyhTY3JvbGxBbmltYXRpb25DbGllbnQmKTsKICAgICB2aXJ0dWFs
IH5TY3JvbGxBbmltYXRpb25LaW5ldGljKCk7CiAKKyAgICBib29sIHN0YXJ0QW5pbWF0ZWRTY3Jv
bGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwg
Y29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Ny
b2xsKTsKKworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25z
dCBmaW5hbDsKKwogICAgIHZvaWQgYXBwZW5kVG9TY3JvbGxIaXN0b3J5KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYpOwogICAgIHZvaWQgY2xlYXJTY3JvbGxIaXN0b3J5KCk7Ci0gICAgRmxvYXRQ
b2ludCBjb21wdXRlVmVsb2NpdHkoKTsKLQotICAgIHZvaWQgc3RhcnQoY29uc3QgRmxvYXRQb2lu
dCYgaW5pdGlhbFBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgYm9vbCBtYXlI
U2Nyb2xsLCBib29sIG1heVZTY3JvbGwpOwotICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwotICAg
IGJvb2wgaXNBY3RpdmUoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyAgICBGbG9hdFBv
aW50IGNvbXB1dGVWZWxvY2l0eSgpOworCiAgICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7
CiAgICAgU2Vjb25kcyBkZWx0YVRvTmV4dEZyYW1lKCk7CiAKLSAgICBTY3JvbGxFeHRlbnRzQ2Fs
bGJhY2sgbV9zY3JvbGxFeHRlbnRzRnVuY3Rpb247Ci0gICAgTm90aWZ5UG9zaXRpb25DaGFuZ2Vk
Q2FsbGJhY2sgbV9ub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbjsKLQogICAgIHN0ZDo6b3B0
aW9uYWw8UGVyQXhpc0RhdGE+IG1faG9yaXpvbnRhbERhdGE7CiAgICAgc3RkOjpvcHRpb25hbDxQ
ZXJBeGlzRGF0YT4gbV92ZXJ0aWNhbERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCmluZGV4IDk1ZmU4YmJhYWIyZjU2MjlkMGVh
NjNiZTM4MzdmMzExZjFlYmNhZWIuLjliZjM0NmUwZjQ4ZmY1YThlMDIyN2E1MDNiZWE1NDg0OGFj
NzVjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
blNtb290aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
U21vb3RoLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdh
bGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MiwyOSArNDIsOCBAQCBzdGF0aWMgY29u
c3QgU2Vjb25kcyB0aWNrVGltZSA9IDFfcyAvIGZyYW1lUmF0ZTsKIHN0YXRpYyBjb25zdCBTZWNv
bmRzIG1pbmltdW1UaW1lckludGVydmFsIHsgMV9tcyB9Owogc3RhdGljIGNvbnN0IGRvdWJsZSBz
bW9vdGhGYWN0b3JGb3JQcm9ncmFtbWF0aWNTY3JvbGwgPSAxOwogCi1TY3JvbGxBbmltYXRpb25T
bW9vdGg6OlBlckF4aXNEYXRhOjpQZXJBeGlzRGF0YShTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmll
bnRhdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIFNjcm9sbEV4dGVudHNDYWxsYmFj
ayYgZXh0ZW50c0NhbGxiYWNrKQotewotICAgIGF1dG8gZXh0ZW50cyA9IGV4dGVudHNDYWxsYmFj
aygpOwotICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsKLSAgICBjYXNlIEhvcml6b250YWxTY3Jv
bGxiYXI6Ci0gICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9uLngoKTsKLSAgICAgICAg
dmlzaWJsZUxlbmd0aCA9IGV4dGVudHMudmlzaWJsZVNpemUud2lkdGgoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBWZXJ0aWNhbFNjcm9sbGJhcjoKLSAgICAgICAgY3VycmVudFBvc2l0aW9u
ID0gcG9zaXRpb24ueSgpOwotICAgICAgICB2aXNpYmxlTGVuZ3RoID0gZXh0ZW50cy52aXNpYmxl
U2l6ZS5oZWlnaHQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZGVzaXJlZFBvc2l0
aW9uID0gY3VycmVudFBvc2l0aW9uOwotfQotCi1TY3JvbGxBbmltYXRpb25TbW9vdGg6OlNjcm9s
bEFuaW1hdGlvblNtb290aChTY3JvbGxFeHRlbnRzQ2FsbGJhY2smJiBzY3JvbGxFeHRlbnRzRnVu
Y3Rpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBOb3RpZnlQb3NpdGlvbkNoYW5nZWRD
YWxsYmFjayYmIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uLCBOb3RpZnlBbmltYXRpb25T
dG9wcGVkQ2FsbGJhY2smJiBub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rpb24pCi0gICAgOiBt
X3Njcm9sbEV4dGVudHNGdW5jdGlvbihXVEZNb3ZlKHNjcm9sbEV4dGVudHNGdW5jdGlvbikpCi0g
ICAgLCBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKFdURk1vdmUobm90aWZ5UG9zaXRp
b25DaGFuZ2VkRnVuY3Rpb24pKQotICAgICwgbV9ub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rp
b24oV1RGTW92ZShub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rpb24pKQotICAgICwgbV9ob3Jp
em9udGFsRGF0YShIb3Jpem9udGFsU2Nyb2xsYmFyLCBwb3NpdGlvbiwgbV9zY3JvbGxFeHRlbnRz
RnVuY3Rpb24pCi0gICAgLCBtX3ZlcnRpY2FsRGF0YShWZXJ0aWNhbFNjcm9sbGJhciwgcG9zaXRp
b24sIG1fc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKQorU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpTY3Jv
bGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCisgICAgOiBT
Y3JvbGxBbmltYXRpb24oY2xpZW50KQogICAgICwgbV9hbmltYXRpb25UaW1lcihSdW5Mb29wOjpj
dXJyZW50KCksIHRoaXMsICZTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlvblRpbWVyRmly
ZWQpCiB7CiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKQEAgLTcyLDExICs1MSwxNSBAQCBTY3Jv
bGxBbmltYXRpb25TbW9vdGg6OlNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxFeHRlbnRzQ2Fs
bGJhY2smJiBzY3JvbGxFeHRlbgogI2VuZGlmCiB9CiAKLWJvb2wgU2Nyb2xsQW5pbWF0aW9uU21v
b3RoOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKQorU2Nyb2xs
QW5pbWF0aW9uU21vb3RoOjp+U2Nyb2xsQW5pbWF0aW9uU21vb3RoKCkgPSBkZWZhdWx0OworCiti
b29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRBbmltYXRlZFNjcm9sbChTY3JvbGxiYXJP
cmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGNv
bnN0IEZsb2F0UG9pbnQmIGZyb21Qb3NpdGlvbiwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGll
cikKIHsKICAgICBmbG9hdCBtaW5TY3JvbGxQb3NpdGlvbjsKICAgICBmbG9hdCBtYXhTY3JvbGxQ
b3NpdGlvbjsKLSAgICBhdXRvIGV4dGVudHMgPSBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbigpOwor
ICAgIGF1dG8gZXh0ZW50cyA9IG1fY2xpZW50LnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oKnRo
aXMpOworICAgIGluaXRpYWxpemVBeGVzRGF0YShleHRlbnRzLCBmcm9tUG9zaXRpb24pOworCiAg
ICAgaWYgKG9yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgbWlu
U2Nyb2xsUG9zaXRpb24gPSBleHRlbnRzLm1pbmltdW1TY3JvbGxQb3NpdGlvbi54KCk7CiAgICAg
ICAgIG1heFNjcm9sbFBvc2l0aW9uID0gZXh0ZW50cy5tYXhpbXVtU2Nyb2xsUG9zaXRpb24ueCgp
OwpAQCAtOTMsNDEgKzc2LDQwIEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzY3JvbGwo
U2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51CiAgICAgcmV0dXJu
IG5lZWRUb1Njcm9sbDsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnNjcm9sbChj
b25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKK2Jvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpz
dGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihjb25zdCBGbG9hdFBvaW50JiBmcm9tUG9z
aXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uUG9zaXRpb24pCiB7CiAgICAgU2Ny
b2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeVBhZ2U7Ci0gICAgYXV0byBleHRl
bnRzID0gbV9zY3JvbGxFeHRlbnRzRnVuY3Rpb24oKTsKLSAgICBib29sIG5lZWRUb1Njcm9sbCA9
IHVwZGF0ZVBlckF4aXNEYXRhKG1faG9yaXpvbnRhbERhdGEsIGdyYW51bGFyaXR5LCBwb3NpdGlv
bi54KCksIGV4dGVudHMubWluaW11bVNjcm9sbFBvc2l0aW9uLngoKSwgZXh0ZW50cy5tYXhpbXVt
U2Nyb2xsUG9zaXRpb24ueCgpLCBzbW9vdGhGYWN0b3JGb3JQcm9ncmFtbWF0aWNTY3JvbGwpOwor
ICAgIGF1dG8gZXh0ZW50cyA9IG1fY2xpZW50LnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oKnRo
aXMpOworICAgIGluaXRpYWxpemVBeGVzRGF0YShleHRlbnRzLCBmcm9tUG9zaXRpb24pOworICAg
IGJvb2wgbmVlZFRvU2Nyb2xsID0gdXBkYXRlUGVyQXhpc0RhdGEobV9ob3Jpem9udGFsRGF0YSwg
Z3JhbnVsYXJpdHksIGRlc3RpbmF0aW9uUG9zaXRpb24ueCgpLCBleHRlbnRzLm1pbmltdW1TY3Jv
bGxQb3NpdGlvbi54KCksIGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9uLngoKSwgc21vb3Ro
RmFjdG9yRm9yUHJvZ3JhbW1hdGljU2Nyb2xsKTsKICAgICBuZWVkVG9TY3JvbGwgfD0KLSAgICAg
ICAgdXBkYXRlUGVyQXhpc0RhdGEobV92ZXJ0aWNhbERhdGEsIGdyYW51bGFyaXR5LCBwb3NpdGlv
bi55KCksIGV4dGVudHMubWluaW11bVNjcm9sbFBvc2l0aW9uLnkoKSwgZXh0ZW50cy5tYXhpbXVt
U2Nyb2xsUG9zaXRpb24ueSgpLCBzbW9vdGhGYWN0b3JGb3JQcm9ncmFtbWF0aWNTY3JvbGwpOwor
ICAgICAgICB1cGRhdGVQZXJBeGlzRGF0YShtX3ZlcnRpY2FsRGF0YSwgZ3JhbnVsYXJpdHksIGRl
c3RpbmF0aW9uUG9zaXRpb24ueSgpLCBleHRlbnRzLm1pbmltdW1TY3JvbGxQb3NpdGlvbi55KCks
IGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9uLnkoKSwgc21vb3RoRmFjdG9yRm9yUHJvZ3Jh
bW1hdGljU2Nyb2xsKTsKICAgICBpZiAobmVlZFRvU2Nyb2xsICYmICFpc0FjdGl2ZSgpKSB7CiAg
ICAgICAgIG1fc3RhcnRUaW1lID0gbV9ob3Jpem9udGFsRGF0YS5zdGFydFRpbWU7CiAgICAgICAg
IGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKICAgICB9Ci19OworICAgIHJldHVybiBuZWVkVG9TY3Jv
bGw7Cit9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdG9wKCkKIHsKICAgICBtX2Fu
aW1hdGlvblRpbWVyLnN0b3AoKTsKLSAgICBtX25vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlv
bigpOworICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZEVuZCgqdGhpcyk7CiB9CiAKLXZv
aWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjp1cGRhdGVWaXNpYmxlTGVuZ3RocygpCit2b2lkIFNj
cm9sbEFuaW1hdGlvblNtb290aDo6dXBkYXRlU2Nyb2xsRXh0ZW50cygpCiB7Ci0gICAgYXV0byBl
eHRlbnRzID0gbV9zY3JvbGxFeHRlbnRzRnVuY3Rpb24oKTsKKyAgICBhdXRvIGV4dGVudHMgPSBt
X2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKICAgICBtX2hvcml6b250
YWxEYXRhLnZpc2libGVMZW5ndGggPSBleHRlbnRzLnZpc2libGVTaXplLndpZHRoKCk7CiAgICAg
bV92ZXJ0aWNhbERhdGEudmlzaWJsZUxlbmd0aCA9IGV4dGVudHMudmlzaWJsZVNpemUuaGVpZ2h0
KCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzZXRDdXJyZW50UG9zaXRpb24o
Y29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCit2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6
aW5pdGlhbGl6ZUF4ZXNEYXRhKGNvbnN0IFNjcm9sbEV4dGVudHMmIGV4dGVudHMsIGNvbnN0IEZs
b2F0UG9pbnQmIHN0YXJ0UG9zaXRpb24pCiB7Ci0gICAgc3RvcCgpOwotICAgIG1faG9yaXpvbnRh
bERhdGEgPSBQZXJBeGlzRGF0YShwb3NpdGlvbi54KCksIG1faG9yaXpvbnRhbERhdGEudmlzaWJs
ZUxlbmd0aCk7Ci0gICAgbV92ZXJ0aWNhbERhdGEgPSBQZXJBeGlzRGF0YShwb3NpdGlvbi55KCks
IG1fdmVydGljYWxEYXRhLnZpc2libGVMZW5ndGgpOworICAgIG1faG9yaXpvbnRhbERhdGEgPSBQ
ZXJBeGlzRGF0YShzdGFydFBvc2l0aW9uLngoKSwgZXh0ZW50cy52aXNpYmxlU2l6ZS53aWR0aCgp
KTsKKyAgICBtX3ZlcnRpY2FsRGF0YSA9IFBlckF4aXNEYXRhKHN0YXJ0UG9zaXRpb24ueSgpLCBl
eHRlbnRzLnZpc2libGVTaXplLmhlaWdodCgpKTsKIH0KIAotU2Nyb2xsQW5pbWF0aW9uU21vb3Ro
Ojp+U2Nyb2xsQW5pbWF0aW9uU21vb3RoKCkgPSBkZWZhdWx0OwotCiBzdGF0aWMgaW5saW5lIGRv
dWJsZSBjdXJ2ZUF0KFNjcm9sbEFuaW1hdGlvblNtb290aDo6Q3VydmUgY3VydmUsIGRvdWJsZSB0
KQogewogICAgIHN3aXRjaCAoY3VydmUpIHsKQEAgLTQzNywxMCArNDE5LDEwIEBAIHZvaWQgU2Ny
b2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRpb25UaW1lckZpcmVkKCkKIAogICAgIGlmIChjb250
aW51ZUFuaW1hdGlvbikKICAgICAgICAgc3RhcnROZXh0VGltZXIoc3RkOjptYXgobWluaW11bVRp
bWVySW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fbm90
aWZ5QW5pbWF0aW9uU3RvcHBlZEZ1bmN0aW9uKCk7CiAKLSAgICBtX25vdGlmeVBvc2l0aW9uQ2hh
bmdlZEZ1bmN0aW9uKEZsb2F0UG9pbnQobV9ob3Jpem9udGFsRGF0YS5jdXJyZW50UG9zaXRpb24s
IG1fdmVydGljYWxEYXRhLmN1cnJlbnRQb3NpdGlvbikpOworICAgIG1fY2xpZW50LnNjcm9sbEFu
aW1hdGlvbkRpZFVwZGF0ZSgqdGhpcywgeyBtX2hvcml6b250YWxEYXRhLmN1cnJlbnRQb3NpdGlv
biwgbV92ZXJ0aWNhbERhdGEuY3VycmVudFBvc2l0aW9uIH0pOworICAgIGlmICghY29udGludWVB
bmltYXRpb24pCisgICAgICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZEVuZCgqdGhpcyk7
CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdGFydE5leHRUaW1lcihTZWNvbmRz
IGRlbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
aW9uU21vb3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9v
dGguaAppbmRleCBmYmY1MzI5YjEwMGMwZDk4OGM2ODIxZDVlOTQ0MjBlMWM1NGY5Y2ZjLi5iZjYw
MmZkODg0MTk3Mzk4ZTI0OTFkYjA2YjUwOWQ2ZWQzMzE3OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaApAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMyLDE2ICszMywxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBGbG9hdFBvaW50OwotY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBlbnVtIGNsYXNzIFNjcm9sbENs
YW1waW5nIDogYm9vbDsKIAogY2xhc3MgU2Nyb2xsQW5pbWF0aW9uU21vb3RoIGZpbmFsOiBwdWJs
aWMgU2Nyb2xsQW5pbWF0aW9uIHsKIHB1YmxpYzoKLSAgICB1c2luZyBTY3JvbGxFeHRlbnRzQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPFNjcm9sbEV4dGVudHModm9pZCk+OwotICAgIHVzaW5nIE5v
dGlmeVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEZsb2F0UG9p
bnQmJik+OwotICAgIHVzaW5nIE5vdGlmeUFuaW1hdGlvblN0b3BwZWRDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZCh2b2lkKT47Ci0KLSAgICBTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xs
RXh0ZW50c0NhbGxiYWNrJiYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBOb3RpZnlQb3Np
dGlvbkNoYW5nZWRDYWxsYmFjayYmLCBOb3RpZnlBbmltYXRpb25TdG9wcGVkQ2FsbGJhY2smJik7
CisgICAgU2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbEFuaW1hdGlvbkNsaWVudCYpOwogICAg
IHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvblNtb290aCgpOwogCiAgICAgZW51bSBjbGFzcyBDdXJ2
ZSB7CkBAIC01MiwxOSArNDgsMTYgQEAgcHVibGljOgogICAgICAgICBCb3VuY2UKICAgICB9Owog
Ci1wcml2YXRlOgotICAgIGJvb2wgc2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxH
cmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllcikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzY3JvbGwoY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcCgp
IG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgc3RydWN0IFBlckF4aXNE
YXRhIHsKLSAgICAgICAgUGVyQXhpc0RhdGEoKSA9IGRlbGV0ZTsKKyAgICBib29sIHN0YXJ0QW5p
bWF0ZWRTY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBjb25z
dCBGbG9hdFBvaW50JiBmcm9tUG9zaXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIp
OworICAgIGJvb2wgc3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oY29uc3QgRmxvYXRQ
b2ludCYgZnJvbVBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvblBvc2l0aW9u
KTsKIAotICAgICAgICBQZXJBeGlzRGF0YShTY3JvbGxiYXJPcmllbnRhdGlvbiwgY29uc3QgRmxv
YXRQb2ludCYgcG9zaXRpb24sIFNjcm9sbEV4dGVudHNDYWxsYmFjayYpOworICAgIHZvaWQgc3Rv
cCgpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlU2Nyb2xsRXh0ZW50cygpIGZpbmFsOworICAgIGJv
b2wgaXNBY3RpdmUoKSBjb25zdCBmaW5hbDsKIAorcHJpdmF0ZToKKyAgICBzdHJ1Y3QgUGVyQXhp
c0RhdGEgeworICAgICAgICBQZXJBeGlzRGF0YSgpID0gZGVmYXVsdDsKICAgICAgICAgUGVyQXhp
c0RhdGEoZmxvYXQgcG9zaXRpb24sIGludCBsZW5ndGgpCiAgICAgICAgICAgICA6IGN1cnJlbnRQ
b3NpdGlvbihwb3NpdGlvbikKICAgICAgICAgICAgICwgZGVzaXJlZFBvc2l0aW9uKHBvc2l0aW9u
KQpAQCAtOTgsMTkgKzkxLDE4IEBAIHByaXZhdGU6CiAKICAgICBib29sIHVwZGF0ZVBlckF4aXNE
YXRhKFBlckF4aXNEYXRhJiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG5ld1Bvc2l0aW9uLCBm
bG9hdCBtaW5TY3JvbGxQb3NpdGlvbiwgZmxvYXQgbWF4U2Nyb2xsUG9zaXRpb24sIGRvdWJsZSBz
bW9vdGhGYWN0b3IgPSAxKTsKICAgICBib29sIGFuaW1hdGVTY3JvbGwoUGVyQXhpc0RhdGEmLCBN
b25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKTsKKyAgICAKKyAgICB2b2lkIGluaXRpYWxpemVBeGVz
RGF0YShjb25zdCBTY3JvbGxFeHRlbnRzJiwgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb3NpdGlv
bik7CiAKICAgICB2b2lkIHJlcXVlc3RBbmltYXRpb25UaW1lckZpcmVkKCk7CiAgICAgdm9pZCBz
dGFydE5leHRUaW1lcihTZWNvbmRzIGRlbGF5KTsKICAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmly
ZWQoKTsKIAotICAgIFNjcm9sbEV4dGVudHNDYWxsYmFjayBtX3Njcm9sbEV4dGVudHNGdW5jdGlv
bjsKLSAgICBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayBtX25vdGlmeVBvc2l0aW9uQ2hh
bmdlZEZ1bmN0aW9uOwotICAgIE5vdGlmeUFuaW1hdGlvblN0b3BwZWRDYWxsYmFjayBtX25vdGlm
eUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbjsKLQogICAgIFBlckF4aXNEYXRhIG1faG9yaXpvbnRh
bERhdGE7CiAgICAgUGVyQXhpc0RhdGEgbV92ZXJ0aWNhbERhdGE7CiAKICAgICBNb25vdG9uaWNU
aW1lIG1fc3RhcnRUaW1lOworICAgIC8vIEZJWE1FOiBTaG91bGQgbm90IGhhdmUgdGltZXIgaGVy
ZSwgYW5kIGluc3RlYWQgdXNlIHNlcnZpY2VBbmltYXRpb24oKS4KICAgICBSdW5Mb29wOjpUaW1l
cjxTY3JvbGxBbmltYXRpb25TbW9vdGg+IG1fYW5pbWF0aW9uVGltZXI7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggMWFlYzk2ZGNiMzVjOTA3
ZjZmMGQ2YmNiMjViYjIzYWNiNjEwNmJmZC4uYmY2OTlkMWIyNWIwNDYwYjg0OWRmOTFiOWM0ZjQ4
N2M5ODQ2NjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cApAQCAtNTQsMjAgKzU0LDcgQEAgU2Nyb2xsQW5pbWF0b3I6OlNjcm9sbEFuaW1hdG9yKFNjcm9s
bGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICA6IG1fc2Nyb2xsYWJsZUFyZWEoc2Nyb2xs
YWJsZUFyZWEpCiAgICAgLCBtX3Njcm9sbENvbnRyb2xsZXIoKnRoaXMpCiAgICAgLCBtX3Njcm9s
bENvbnRyb2xsZXJBbmltYXRpb25UaW1lcigqdGhpcywgJlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxD
b250cm9sbGVyQW5pbWF0aW9uVGltZXJGaXJlZCkKLSAgICAsIG1fc2Nyb2xsQW5pbWF0aW9uKG1h
a2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigKLSAgICAgICAgW3RoaXNdKCkgLT4gU2Ny
b2xsRXh0ZW50cyB7Ci0gICAgICAgICAgICByZXR1cm4geyBtX3Njcm9sbGFibGVBcmVhLm1pbmlt
dW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxQb3NpdGlv
bigpLCBtX3Njcm9sbGFibGVBcmVhLnZpc2libGVTaXplKCkgfTsKLSAgICAgICAgfSwKLSAgICAg
ICAgbV9jdXJyZW50UG9zaXRpb24sCi0gICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRp
b24pIHsKLSAgICAgICAgICAgIEZsb2F0U2l6ZSBkZWx0YSA9IHBvc2l0aW9uIC0gbV9jdXJyZW50
UG9zaXRpb247Ci0gICAgICAgICAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IFdURk1vdmUocG9zaXRp
b24pOwotICAgICAgICAgICAgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKGRlbHRhKTsKLSAgICAgICAg
ICAgIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9mZnNldCgpOwotICAgICAgICB9LAot
ICAgICAgICBbdGhpc10gewotICAgICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5zZXRTY3JvbGxC
ZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1czo6Tm90SW5BbmltYXRpb24pOwotICAg
ICAgICB9KSkKKyAgICAsIG1fc2Nyb2xsQW5pbWF0aW9uKG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0
aW9uU21vb3RoPigqdGhpcykpCiAgICAgLCBtX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IobWFr
ZVVuaXF1ZTxLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yPigqdGhpcywgbV9zY3JvbGxDb250cm9s
bGVyKSkKIHsKIH0KQEAgLTk5LDExICs4Niw4IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9s
bChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkKICAg
ICB9CiAKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgJiYg
IWJlaGF2aW9yLmNvbnRhaW5zKFNjcm9sbEJlaGF2aW9yOjpOZXZlckFuaW1hdGUpKSB7Ci0gICAg
ICAgIGlmICghbV9zY3JvbGxBbmltYXRpb24tPmlzQWN0aXZlKCkpCi0gICAgICAgICAgICBtX3Nj
cm9sbEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKG1fY3VycmVudFBvc2l0aW9uKTsKLSAg
ICAgICAgcmV0dXJuIG1fc2Nyb2xsQW5pbWF0aW9uLT5zY3JvbGwob3JpZW50YXRpb24sIGdyYW51
bGFyaXR5LCBzdGVwLCBtdWx0aXBsaWVyKTsKLSAgICB9CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFy
ZWEuc2Nyb2xsQW5pbWF0b3JFbmFibGVkKCkgJiYgIWJlaGF2aW9yLmNvbnRhaW5zKFNjcm9sbEJl
aGF2aW9yOjpOZXZlckFuaW1hdGUpKQorICAgICAgICByZXR1cm4gbV9zY3JvbGxBbmltYXRpb24t
PnN0YXJ0QW5pbWF0ZWRTY3JvbGwob3JpZW50YXRpb24sIGdyYW51bGFyaXR5LCBtX2N1cnJlbnRQ
b3NpdGlvbiwgc3RlcCwgbXVsdGlwbGllcik7CiAjZW5kaWYKIAogICAgIHJldHVybiBzY3JvbGxU
b1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihjdXJyZW50UG9zaXRpb24oKSArIGRlbHRhKTsKQEAg
LTEyNCw3ICsxMDgsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9uV2l0
aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbgogICAgIGlmIChhZGp1c3Rl
ZFBvc2l0aW9uID09IGN1cnJlbnRQb3NpdGlvbiAmJiBhZGp1c3RlZFBvc2l0aW9uID09IHNjcm9s
bGFibGVBcmVhKCkuc2Nyb2xsUG9zaXRpb24oKSAmJiAhc2Nyb2xsYWJsZUFyZWEoKS5zY3JvbGxP
cmlnaW5DaGFuZ2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fc2Nyb2xsQW5p
bWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbik7CisgICAgbV9zY3Jv
bGxBbmltYXRpb24tPnN0b3AoKTsKICAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IGFkanVzdGVkUG9z
aXRpb247CiAgICAgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKGFkanVzdGVkUG9zaXRpb24gLSBjdXJy
ZW50UG9zaXRpb24pOwogICAgIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9mZnNldCgp
OwpAQCAtMTQyLDggKzEyNiw3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRp
b25XaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uCiAgICAgaWYgKCFw
b3NpdGlvbkNoYW5nZWQgJiYgIXNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c2V0Q3Vy
cmVudFBvc2l0aW9uKG1fY3VycmVudFBvc2l0aW9uKTsKLSAgICBtX3Njcm9sbEFuaW1hdGlvbi0+
c2Nyb2xsKG5ld1Bvc2l0aW9uKTsKKyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c3RhcnRBbmltYXRl
ZFNjcm9sbFRvRGVzdGluYXRpb24obV9jdXJyZW50UG9zaXRpb24sIG5ld1Bvc2l0aW9uKTsKICAg
ICBzY3JvbGxhYmxlQXJlYSgpLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9y
U3RhdHVzOjpJbk5vbk5hdGl2ZUFuaW1hdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0x
NTIsNyArMTM1LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvcjo6cmV0YXJnZXRSdW5uaW5nQW5pbWF0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uKQogewogICAgIEFTU0VSVChzY3JvbGxh
YmxlQXJlYSgpLmN1cnJlbnRTY3JvbGxCZWhhdmlvclN0YXR1cygpID09IFNjcm9sbEJlaGF2aW9y
U3RhdHVzOjpJbk5vbk5hdGl2ZUFuaW1hdGlvbik7CiAgICAgQVNTRVJUKG1fc2Nyb2xsQW5pbWF0
aW9uLT5pc0FjdGl2ZSgpKTsKLSAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c2Nyb2xsKG5ld1Bvc2l0
aW9uKTsKKyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGlu
YXRpb24obV9jdXJyZW50UG9zaXRpb24sIG5ld1Bvc2l0aW9uKTsKIH0KIAogRmxvYXRQb2ludCBT
Y3JvbGxBbmltYXRvcjo6b2Zmc2V0RnJvbVBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uKQpAQCAtMzc1LDIyICszNTgsMjIgQEAgdm9pZCBTY3JvbGxBbmltYXRvcjo6Y2FuY2VsQW5p
bWF0aW9ucygpCiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmNvbnRlbnRzUmVzaXplZCgpIGNvbnN0
CiB7Ci0gICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CisgICAg
bV9zY3JvbGxBbmltYXRpb24tPnVwZGF0ZVNjcm9sbEV4dGVudHMoKTsKIH0KIAogdm9pZCBTY3Jv
bGxBbmltYXRvcjo6d2lsbEVuZExpdmVSZXNpemUoKQogewotICAgIG1fc2Nyb2xsQW5pbWF0aW9u
LT51cGRhdGVWaXNpYmxlTGVuZ3RocygpOworICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT51cGRhdGVT
Y3JvbGxFeHRlbnRzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmRpZEFkZFZlcnRpY2Fs
U2Nyb2xsYmFyKFNjcm9sbGJhciopCiB7Ci0gICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0ZVZp
c2libGVMZW5ndGhzKCk7CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0ZVNjcm9sbEV4dGVu
dHMoKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvcjo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJh
cihTY3JvbGxiYXIqKQogewotICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT51cGRhdGVWaXNpYmxlTGVu
Z3RocygpOworICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT51cGRhdGVTY3JvbGxFeHRlbnRzKCk7CiB9
CiAKIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6OmFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBw
aW5nSWZOZWVkZWQoY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0LCBTY3JvbGxTbmFwUG9pbnRTZWxl
Y3Rpb25NZXRob2QgbWV0aG9kKQpAQCAtNDIyLDUgKzQwNSwyNyBAQCBmbG9hdCBTY3JvbGxBbmlt
YXRvcjo6YWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5lZWRlZChTY3JvbGxFdmVudEF4
aXMgYXhpcwogICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIuYWRqdXN0U2Nyb2xsRGVzdGlu
YXRpb24oYXhpcywgbmV3T2Zmc2V0LCB2ZWxvY2l0eUluU2Nyb2xsQXhpcywgb3JpZ2luYWxPZmZz
ZXQpOwogfQogCit2b2lkIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUo
U2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCit7CisgICAgRmxv
YXRTaXplIGRlbHRhID0gcG9zaXRpb24gLSBtX2N1cnJlbnRQb3NpdGlvbjsKKyAgICBtX2N1cnJl
bnRQb3NpdGlvbiA9IHBvc2l0aW9uOworICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7
CisgICAgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7Cit9CisKK3ZvaWQg
U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKQor
eworICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVo
YXZpb3JTdGF0dXM6Ok5vdEluQW5pbWF0aW9uKTsKK30KKworU2Nyb2xsRXh0ZW50cyBTY3JvbGxB
bmltYXRvcjo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKQorewor
ICAgIHJldHVybiB7CisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0
aW9uKCksCisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCks
CisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKQorICAgIH07Cit9CisKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmgKaW5kZXggZWJiNDc3MTExZTA3MDk1NGI4NWFkYzViOTU2NWI4YTIzMzc5MTk2My4uYTEx
ZTkwZTExZDc1OTZmNDFlNjI4ODI5Mjc1NTUxZDcyZGU1YmRhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAi
U2Nyb2xsQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5o
IgpAQCAtNDQsMTQgKzQ1LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0UG9p
bnQ7CiBjbGFzcyBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yOwogY2xhc3MgUGxhdGZvcm1Ub3Vj
aEV2ZW50OwotY2xhc3MgU2Nyb2xsQW5pbWF0aW9uOworY2xhc3MgU2Nyb2xsQW5pbWF0aW9uU21v
b3RoOwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTY3JvbGxiYXI7CiBjbGFzcyBXaGVl
bEV2ZW50VGVzdE1vbml0b3I7CiAKIGNsYXNzIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGlt
ZXI7CiAKLWNsYXNzIFNjcm9sbEFuaW1hdG9yIDogcHJpdmF0ZSBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlckNsaWVudCB7CitjbGFzcyBTY3JvbGxBbmltYXRvciA6IHByaXZhdGUgU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXJDbGllbnQsIHB1YmxpYyBTY3JvbGxBbmltYXRpb25DbGllbnQgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IGNyZWF0ZShTY3JvbGxhYmxlQXJlYSYpOwpAQCAtMTMz
LDYgKzEzNCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgaG9yaXpvbnRhbFNjcm9s
bGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KICAg
ICB2aXJ0dWFsIFN0cmluZyB2ZXJ0aWNhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0
IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIAorICAgIC8vIFNjcm9sbEFuaW1hdGlvbkNsaWVu
dAorICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNv
bnN0IEZsb2F0UG9pbnQmIGN1cnJlbnRQb3NpdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3Jv
bGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikgb3ZlcnJpZGU7CisgICAgU2Nyb2xs
RXh0ZW50cyBzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpIG92ZXJy
aWRlOworCiAgICAgdm9pZCBzZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IoUmVmUHRyPFdoZWVsRXZl
bnRUZXN0TW9uaXRvcj4mJiB0ZXN0TW9uaXRvcikgeyBtX3doZWVsRXZlbnRUZXN0TW9uaXRvciA9
IHRlc3RNb25pdG9yOyB9CiAKICAgICBGbG9hdFBvaW50IGFkanVzdFNjcm9sbE9mZnNldEZvclNu
YXBwaW5nSWZOZWVkZWQoY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0LCBTY3JvbGxTbmFwUG9pbnRT
ZWxlY3Rpb25NZXRob2QpOwpAQCAtMTc5LDcgKzE4NSw3IEBAIHByb3RlY3RlZDoKICAgICBUaW1l
ciBtX3Njcm9sbENvbnRyb2xsZXJBbmltYXRpb25UaW1lcjsKICAgICBGbG9hdFBvaW50IG1fY3Vy
cmVudFBvc2l0aW9uOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbj4gbV9z
Y3JvbGxBbmltYXRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvblNtb290
aD4gbV9zY3JvbGxBbmltYXRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEtleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3I+IG1fa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcjsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5l
cmljLmNwcAppbmRleCA4OTA4NDJkYzY2M2Y2Mzk5NTcyZjg5MzE0NTg5Y2IyNzI3M2Q5YjgyLi43
ODIzODM1YzQxNTg5N2U5NzUwZmU0MmM3ZGVhYjg1MzYyYWM1M2YyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMu
Y3BwCkBAIC00OCwxNiArNDgsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNj
cm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibAogCiBTY3JvbGxB
bmltYXRvckdlbmVyaWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYgc2Ny
b2xsYWJsZUFyZWEpCiAgICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKKyAgICAs
IG1fa2luZXRpY0FuaW1hdGlvbihtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KCp0
aGlzKSkKICAgICAsIG1fb3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Ny
b2xsQW5pbWF0b3JHZW5lcmljOjpvdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJlZCkK
IHsKLSAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktp
bmV0aWM+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAg
IHJldHVybiB7IG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Ny
b2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEudmlz
aWJsZVNpemUoKSB9OwotICAgICAgICB9LAotICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBv
c2l0aW9uKSB7Ci0gICAgICAgICAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0
aW9uKHBvc2l0aW9uKTsKLSAgICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uKFdURk1vdmUocG9zaXRp
b24pKTsKLSAgICAgICAgfSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6flNjcm9sbEFu
aW1hdG9yR2VuZXJpYygpID0gZGVmYXVsdDsKQEAgLTc2LDEyICs2OSwxMiBAQCBib29sIFNjcm9s
bEFuaW1hdG9yR2VuZXJpYzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmIGV2ZW50KQogICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+YXBwZW5kVG9TY3JvbGxIaXN0b3J5
KGV2ZW50KTsKIAogICAgIGlmIChldmVudC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgewot
ICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KG1fY3VycmVudFBvc2l0aW9uLCBtX2tp
bmV0aWNBbmltYXRpb24tPmNvbXB1dGVWZWxvY2l0eSgpLCBtX3Njcm9sbGFibGVBcmVhLmhvcml6
b250YWxTY3JvbGxiYXIoKSwgbV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpKTsK
KyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRp
YWxWZWxvY2l0eShtX2N1cnJlbnRQb3NpdGlvbiwgbV9raW5ldGljQW5pbWF0aW9uLT5jb21wdXRl
VmVsb2NpdHkoKSwgbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCksIG1fc2Ny
b2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICBpZiAoZXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpKSB7
CiAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7Ci0gICAg
ICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnQobV9jdXJyZW50UG9zaXRpb24sIGV2ZW50LnN3
aXBlVmVsb2NpdHkoKSwgbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCksIG1f
c2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKSk7CisgICAgICAgIG1fa2luZXRpY0Fu
aW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkobV9jdXJyZW50
UG9zaXRpb24sIGV2ZW50LnN3aXBlVmVsb2NpdHkoKSwgbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9u
dGFsU2Nyb2xsYmFyKCksIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZgpAQCAtODksMTAgKzgyLDEwIEBAIGJv
b2wgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVl
bEV2ZW50KGV2ZW50KTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnVwZGF0ZVBv
c2l0aW9uKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
Ojp1cGRhdGVQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBGbG9h
dFNpemUgZGVsdGEgPSBwb3NpdGlvbiAtIG1fY3VycmVudFBvc2l0aW9uOwotICAgIG1fY3VycmVu
dFBvc2l0aW9uID0gV1RGTW92ZShwb3NpdGlvbik7CisgICAgbV9jdXJyZW50UG9zaXRpb24gPSBw
b3NpdGlvbjsKICAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoZGVsdGEpOwogICAgIHVwZGF0ZUFj
dGl2ZVNjcm9sbFNuYXBJbmRleEZvck9mZnNldCgpOwogfQpAQCAtMjg4LDUgKzI4MSwxOCBAQCB2
b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6bG9ja092ZXJsYXlTY3JvbGxiYXJTdGF0ZVRvSGlk
ZGVuKGJvb2wgc2hvdWxkTG9ja1N0YQogICAgIH0KIH0KIAorLy8gRklYTUU6IENhbiB3ZSBqdXN0
IHVzZSB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbj8KK3ZvaWQgU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiBhbmltYXRp
b24sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIGlmICgmYW5pbWF0aW9uID09
IG1fa2luZXRpY0FuaW1hdGlvbi5nZXQoKSkgeworICAgICAgICAvLyBGSVhNRTogQ2xhcmlmeSBo
b3cgYW5pbWF0aW9ucyBpbnRlcmFjdC4gVGhlcmUgc2hvdWxkIG5ldmVyIGJlIG1vcmUgdGhhbiBv
bmUgYWN0aXZlIGF0IGEgdGltZS4KKyAgICAgICAgbV9zY3JvbGxBbmltYXRpb24tPnN0b3AoKTsK
KyAgICAgICAgdXBkYXRlUG9zaXRpb24ocG9zaXRpb24pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShhbmltYXRp
b24sIHBvc2l0aW9uKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMu
aAppbmRleCBlMDQ2YzUzMWJiODRjMmFjZmY1ZTg5NDY1NTZkZGMxMTI1Yzk4YWYzLi5mNDg4ZjJm
NWExOTdiNzQ2MjU0YmQyMDcwNWY4ZDg0ZDIyOTEwMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKQEAgLTYx
LDcgKzYxLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlDb250ZW50QXJlYVNjcm9sbGVk
KGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9ja092ZXJsYXlT
Y3JvbGxiYXJTdGF0ZVRvSGlkZGVuKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB1cGRhdGVQ
b3NpdGlvbihGbG9hdFBvaW50JiYpOworICAgIC8vIFNjcm9sbEFuaW1hdGlvbkNsaWVudAorICAg
IHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZs
b2F0UG9pbnQmIGN1cnJlbnRQb3NpdGlvbikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHVwZGF0ZVBv
c2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKIAogICAgIHZvaWQgb3ZlcmxheVNjcm9sbGJhckFu
aW1hdGlvblRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHNob3dPdmVybGF5U2Nyb2xsYmFycygpOwo=
</data>
<flag name="commit-queue"
          id="461815"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438444</attachid>
            <date>2021-09-16 21:39:19 -0700</date>
            <delta_ts>2021-09-17 11:41:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230385-20210916213918.patch</filename>
            <type>text/plain</type>
            <size>47766</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjMyYWZjNTY3ZmNmYTQ4
NmIxNWJiZTUxZTFkZjhjZjg5MDQ0Yjg0Yy4uNmI5OGU2OWNiOGJmZWMzMjEzMjE0ODRjZjY2YTI1
YWQ5NGVkMGNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTA5LTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2Nyb2xs
QW5pbWF0aW9uIGEgbGl0dGxlIG1vcmUgZ2VuZXJpYworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMzg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlcGFyZSBmb3IgbmV3IFNjcm9sbEFuaW1hdGlvbiBz
dWJjbGFzc2VzIGJ5IG1ha2luZyBpdCBhIGxpdHRsZSBtb3JlIGdlbmVyaWMuIFJhdGhlcgorICAg
ICAgICB0aGFuIHRoZSBmdW5jdGlvbiBjYWxsYmFja3MsIHVzZSBhIHZpcnR1YWwgY2xpZW50IGNs
YXNzLCBpbXBsZW1lbnRlZCBieSBTY3JvbGxBbmltYXRvcgorICAgICAgICBhbmQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuIFJlbW92ZSB0aGUgZ2VuZXJpYyAnc2Ny
b2xsJyBtZXRob2RzCisgICAgICAgIGZyb20gdGhlIGJhc2UgY2xhc3MsIHNpbmNlIHRoZXkgb25s
eSBhcHBseSB0byBTY3JvbGxBbmltYXRpb25TbW9vdGggKGNsaWVudHMgbmVlZAorICAgICAgICB0
byBrZWVwIGRlcml2ZWQgY2xhc3MgcG9pbnRlcnMsIGFuZCBtb3N0IGFscmVhZHkgZG8pLgorICAg
ICAgICAKKyAgICAgICAgUmVtb3ZlIGFtYmlndWl0eSBhcm91bmQgdGhlIGN1cnJlbnRQb3NpdGlv
biBieSByZXF1aXJpbmcgaXQgZm9yIGV2ZXJ5ICdzdGFydCcgY2FsbC4KKyAgICAgICAgUmVtb3Zl
IGFtYmlndWl0eSBhcm91bmQgc2V0Q3VycmVudFBvc2l0aW9uKCkgYnkgcmVtb3ZpbmcgaXQuIENs
aWVudHMganVzdCBjYWxsIHN0b3AoKS4KKyAgICAgICAgCisgICAgICAgIERvIHBlci1heGlzIHNl
dHVwIHdoZW4gc3RhcnRpbmcgYW5pbWF0aW9ucywgbm90IHdoZW4gY3JlYXRpbmcgb25lLCBzbyB0
aGUgYW5pbWF0aW9uIHN0YXJ0cworICAgICAgICBvdXQgc3RhdGVsZXNzLgorCisgICAgICAgICog
U291cmNlcy50eHQ6IEJ1aWxkIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwIGZv
ciBtYWNPUywgbW9zdGx5IHRvIGNhdGNoCisgICAgICAgIGJ1aWxkIGVycm9ycyAoaXQncyBjdXJy
ZW50bHkgdW51c2VkKS4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6cmVzZXRDdXJyZW50UG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1h
dGlvblNtb290aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9u
RGlkVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmltYXRpb25EaWRFbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEV4dGVu
dHNGb3JBbmltYXRpb24pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6
U2Nyb2xsQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6dXBk
YXRlU2Nyb2xsRXh0ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OnNl
cnZpY2VBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uOjp+U2Ny
b2xsQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlv
bjo6c2Nyb2xsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6
dXBkYXRlVmlzaWJsZUxlbmd0aHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0aW9uOjpzZXRDdXJyZW50UG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0aW9uS2luZXRpYzo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRp
YWxWZWxvY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjph
bmltYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OnN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25LaW5ldGljLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0
aW9uU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3Rh
cnRBbmltYXRlZFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9v
dGg6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRpb25TbW9vdGg6OnVwZGF0ZVNjcm9sbEV4dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjppbml0aWFsaXplQXhlc0RhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRpb25UaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6UGVyQXhpc0RhdGE6OlBlckF4aXNE
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6
c2Nyb2xsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290
aDo6dXBkYXRlVmlzaWJsZUxlbmd0aHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0aW9uU21vb3RoOjpzZXRDdXJyZW50UG9zaXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpT
Y3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9uV2l0
aG91dEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
VG9Qb3NpdGlvbldpdGhBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OnJldGFyZ2V0UnVubmluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvcjo6Y29udGVudHNSZXNpemVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yOjp3aWxsRW5kTGl2ZVJlc2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvcjo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3I6OmRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlkRW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKToKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptX2tleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdl
bmVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoYW5kbGVX
aGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6dXBk
YXRlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpz
Y3JvbGxBbmltYXRpb25EaWRVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmg6CisKIDIwMjEtMDktMTYgIFR5bGVyIFdpbGNvY2sgPHR3aWxj
by5vQHByb3Rvbm1haWwuY29tPiBhbmQgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIGZvbnQtd2VpZ2h0IHNob3VsZCBhbHdheXMgc2VyaWFsaXplIGFz
IGEgbnVtYmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJiODRiYWE1OTU0NWMzYTNmMjQ0YzVmMjJmZWZl
ODIzMGZiZDcwZjIuLjc0OWZmY2IyODRmZThkOWFiZjhmZWMxNzQ4NzZmNGIzY2ZiY2VkZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0xODExLDYgKzE4MTEsNyBAQCBwbGF0Zm9ybS9SZWZlcnJlclBvbGlj
eS5jcHAKIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKIHBsYXRmb3JtL1J1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKIHBsYXRmb3JtL1NTTEtleUdlbmVyYXRvci5jcHAKK3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguY3BwCiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKIHBsYXRmb3JtL1Njcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAppbmRleCBlMjIyZjY2
YjE1NmE4YjdmMjZiNWY5OGQ2NmU5ZDdhY2NhM2Q0ZDA2Li45ZGZkOGI2MWI0YWNiNDU2ZDNkYzBh
NGIxYjAwNjRhNDFiOGMzMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RL
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtNjIsNyArNjIsNiBA
QCBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5jcHAK
IHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lO
b2RlLmNwcAogCi1wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAogcGxhdGZvcm0v
VXNlckFnZW50UXVpcmtzLmNwcAogCiBwbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1lQWR3
YWl0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKaW5kZXggYjEwYzFlY2U1MjA3NWI3NTM1ZGE1MWMy
Y2MzMTZkYzkzNDNmZDA4MS4uOGRhZDhjNzFjOGZlYTJhYmQzZjE5MTljMDRlOWRhMjc2OTRkODBi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlc1dQRS50eHQKQEAgLTU4LDcgKzU4LDYgQEAgcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAogcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKIAotcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5j
cHAKIAogcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzc1
ODQzMDYxNzdkODY1YjQ5ZTE5YjdlMDM5ZGVkZjUwMGYxM2Q2ZC4uZTNiODJiNmQxODFiOWI2ZDRh
YTNjNGZkY2NjYzUzY2U5ZjhlOGZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzUyLDYgKzM1Miw3IEBACiAJCTBGOTRGMzdF
MjM2NjE2MjYwMDNBQTVDNyAvKiBTdHlsZVJ1bGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk0RjM3QzIzNjYxMTMxMDAzQUE1QzcgLyogU3R5
bGVSdWxlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGOURBQTBGMUZEMUM2NkEwMDc5QzVCMiAvKiBET01HQ091dHB1dENvbnN0cmFpbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOURBQTBF
MUZEMUM2NjQwMDc5QzVCMiAvKiBET01HQ091dHB1dENvbnN0cmFpbnQuaCAqLzsgfTsKIAkJMEZB
MjREN0ExNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkEyNEQ3ODE2MkRGOTE5MDBB
M0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkE2MUIwRTI2RjQzMjEzMDAxQUFEQjYgLyogU2Ny
b2xsQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkE2MUIwQzI2RjQzMjEyMDAxQUFEQjYgLyogU2Nyb2xsQW5pbWF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCNjI1MkYxOERF
MUIxNTAwQTA3QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI2MjUyRDE4REUxQjE1MDBBMDdDMDUgLyogR2Vv
bWV0cnlVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRkI4ODkwRjE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlj
a3lOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkI4ODkwRDE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCQjVGQkUy
NjA5OTFEMjAwNTQ1NzJDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkI1RkJEMjYwOTVBOUMw
MDU0NTcyQyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYzMjQsNiArNjMyNSw3IEBACiAJ
CTBGQTBBMEU1MjNBRUFBMzUwMDBFRUI5NCAvKiBkaWFsb2cuY3NzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5j
c3M7IHBhdGggPSBkaWFsb2cuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEy
NEQ3NzE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllclVwZGF0ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAgLyog
R3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R3JhcGhpY3NMYXllclVwZGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZB
NjFCMEMyNkY0MzIxMjAwMUFBREI2IC8qIFNjcm9sbEFuaW1hdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZCMDY4OTQyNTI0M0I5MDAwMUU4RTc1IC8qIERpc3BsYXlUZXh0Qm94LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlUZXh0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZCMDY4OTYyNTI0M0I5MDAwMUU4RTc1IC8qIERpc3BsYXlUZXh0Qm94
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlUZXh0Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGQjYyNTJDMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9tZXRyeVV0aWxpdGll
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODA0Myw2ICsyODA0NSw3IEBA
CiAJCQkJNDExMjIzQjgyNjAyNDRGRTAwQjBBMEI2IC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyLmggKi8sCiAJCQkJQkM4QUUzNEMxMkVBMDk2QTAwRUIzQUU2IC8qIFNjcm9sbGFi
bGVBcmVhLmNwcCAqLywKIAkJCQlCQzhBRTM0RDEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJs
ZUFyZWEuaCAqLywKKwkJCQkwRkE2MUIwQzI2RjQzMjEyMDAxQUFEQjYgLyogU2Nyb2xsQW5pbWF0
aW9uLmggKi8sCiAJCQkJMEZDNjkyQkMyNTdDMEY0MTAwOThFM0Y5IC8qIFNjcm9sbEFuaW1hdGlv
bktpbmV0aWMuY3BwICovLAogCQkJCTBGQzY5MkJBMjU3QzBGNDAwMDk4RTNGOSAvKiBTY3JvbGxB
bmltYXRpb25LaW5ldGljLmggKi8sCiAJCQkJMEZDNjkyQkQyNTdDMEY0MTAwOThFM0Y5IC8qIFNj
cm9sbEFuaW1hdGlvblNtb290aC5jcHAgKi8sCkBAIC0zMzEzMiw3ICszMzEzNSw2IEBACiAJCQkJ
QkM2OTMyNzQwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjUyRkJCQkMwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9tLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0NjBDQkYzNjFENEJDRDBFMDA5MkU4OEUgLyogSlNET01XaW5k
b3dQcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTBCQ0Y1NjI2RjBDRDhDMDA0MEIx
MjQgLyogUlRDTG9jYWxTZXNzaW9uRGVzY3JpcHRpb25Jbml0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2NUUwRTk0NDExMzNDODlGMDBCNENCMTAgLyogSlNET01XcmFwcGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QzQ1QzlEMzFFM0ZDQkQ3MDBBQUI1NTggLyogSlNET01XcmFwcGVyQ2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzQTgwNjFFMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0RvdWJsZVJh
bmdlLmggaW4gSGVhZGVycyAqLywKQEAgLTM0NzQyLDYgKzM0NzQ0LDcgQEAKIAkJCQkwN0FCOTk2
QjE4REEzQzAxMDAxODc3MUUgLyogUlRDSWNlU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MTM1OTEwODFFN0REQzczMDBGMzA2MzAgLyogUlRDSWNlVHJhbnNwb3J0UG9saWN5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMTM1OTEwOTFFN0REQzczMDBGMzA2MzAgLyogUlRDSWNlVHJhbnNwb3J0
U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMEJDRjU2MjZGMENEOEMwMDQwQjEyNCAvKiBS
VENMb2NhbFNlc3Npb25EZXNjcmlwdGlvbkluaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQzE0
QkM2MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3JrTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDczNzk0RkUxOUY1ODY0RTAwRTVBMDQ1IC8qIFJUQ05vdGlmaWVyc01vY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3Mzc5NERFMTlFRTJDNTIwMEU1QTA0NSAvKiBSVENPZmZlckFuc3dl
ck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ4MTQsNiArMzQ4MTcsNyBAQAogCQkJCTE0
MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzhBRTM0RjEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFyZWEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVEOTI1QjY4MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxB
bGlnbm1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTYxQjBFMjZGNDMyMTMwMDFBQURCNiAv
KiBTY3JvbGxBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNBM0JGNjdFMTBEOTlCQUUw
MEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNzc0ODAx
Mzc4Qjc3MjAwOURBNzZBIC8qIFNjcm9sbEFuaW1hdG9ySU9TLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0FFMUZBNzEyOTM5REI3MDA0Q0IwMjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVOaWNvc2lhLmNwcAppbmRleCA2OWViMTExNGMxODAyZWE1MTU5ZDg0ZDk4YjdmMzFm
ZmVhMGNjNTk0Li45ODg4ZGZiNmZhYWIzYzIwMmNlMDBmNGU4Yjc0MmVlNDI0MWQwOWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVO
aWNvc2lhLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhOjpyZXNldEN1cnJlbnRQb3NpdGlvbigpCiB7CiAjaWYgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCiAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBt
X3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHNjcm9sbGluZ05vZGUoKS5jdXJy
ZW50U2Nyb2xsUG9zaXRpb24oKSk7CisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9wKCk7
CiAjZW5kaWYKIH0KIApAQCAtNjksNyArNjksNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp1cGRhdGVWaXNpYmxlTGVuZ3RocygpCiB7CiAjaWYgRU5B
QkxFKFNNT09USF9TQ1JPTExJTkcpCiAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAg
ICBtX3Ntb290aEFuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKKyAgICAgICAgbV9z
bW9vdGhBbmltYXRpb24tPnVwZGF0ZVNjcm9sbEV4dGVudHMoKTsKICNlbmRpZgogfQogCkBAIC03
OSwxOCArNzksNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCkKICAgICBpZiAobV9raW5ldGljQW5p
bWF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtl
VW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KAotICAgICAgICBbdGhpc10oKSAtPiBTY3Jv
bGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJldHVybiB7IEludFBvaW50KG1pbmltdW1TY3JvbGxQ
b3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJbnRTaXplKHNj
cm9sbGFibGVBcmVhU2l6ZSgpKSB9OwotICAgICAgICB9LAotICAgICAgICBbdGhpc10oRmxvYXRQ
b2ludCYmIHBvc2l0aW9uKSB7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgICAg
ICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgICAgICAgICAgbV9zbW9vdGhBbmlt
YXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7Ci0jZW5kaWYKLSAgICAgICAgICAg
IGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAgICAgICAgc2Ny
b2xsaW5nTm9kZSgpLnNjcm9sbFRvKHBvc2l0aW9uKTsKLSAgICAgICAgfSk7CisgICAgbV9raW5l
dGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigqdGhpcyk7
CiB9CiAjZW5kaWYKIApAQCAtMTAwLDE2ICs4OSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCgpCiAg
ICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Ntb290
aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigKLSAgICAgICAg
W3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7Ci0gICAgICAgICAgICByZXR1cm4geyBJbnRQb2lu
dChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3JvbGxQb3NpdGlv
bigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKLSAgICAgICAgfSwKLSAgICAg
ICAgY3VycmVudFNjcm9sbFBvc2l0aW9uKCksCi0gICAgICAgIFt0aGlzXShGbG9hdFBvaW50JiYg
cG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVVcGRhdGVT
Y29wZSgpOwotICAgICAgICAgICAgc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbFRvKHBvc2l0aW9uKTsK
LSAgICAgICAgfSwKLSAgICAgICAgW10geyB9KTsKKyAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1h
a2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigqdGhpcyk7CiB9CiAjZW5kaWYKIApAQCAt
MTI1LDEyICsxMDUsMTIgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpoYW5kbGVXaGVlbEUKICAgICBtX2tpbmV0aWNB
bmltYXRpb24tPmFwcGVuZFRvU2Nyb2xsSGlzdG9yeSh3aGVlbEV2ZW50KTsKICAgICBtX2tpbmV0
aWNBbmltYXRpb24tPnN0b3AoKTsKICAgICBpZiAod2hlZWxFdmVudC5pc0VuZE9mTm9uTW9tZW50
dW1TY3JvbGwoKSkgewotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KGN1cnJlbnRT
Y3JvbGxQb3NpdGlvbigpLCBtX2tpbmV0aWNBbmltYXRpb24tPmNvbXB1dGVWZWxvY2l0eSgpLCBj
YW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhciwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAg
ICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxW
ZWxvY2l0eShjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwgbV9raW5ldGljQW5pbWF0aW9uLT5jb21w
dXRlVmVsb2NpdHkoKSwgY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIsIGNhbkhhdmVWZXJ0aWNh
bFNjcm9sbGJhcik7CiAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0
b3J5KCk7CiAgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQo
KTsKICAgICB9CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNj
cm9sbCgpKSB7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnQoY3VycmVudFNjcm9s
bFBvc2l0aW9uKCksIHdoZWVsRXZlbnQuc3dpcGVWZWxvY2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRh
bFNjcm9sbGJhciwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgbV9raW5ldGlj
QW5pbWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjdXJyZW50
U2Nyb2xsUG9zaXRpb24oKSwgd2hlZWxFdmVudC5zd2lwZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jp
em9udGFsU2Nyb2xsYmFyLCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIpOwogICAgICAgICBtX2tp
bmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwogICAgICAgICByZXR1cm4gV2hl
ZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CiAgICAgfQpAQCAtMTgyLDggKzE2Miw4
IEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcp
CiAgICAgaWYgKG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkICYmICF3aGVlbEV2ZW50Lmhhc1ByZWNp
c2VTY3JvbGxpbmdEZWx0YXMoKSkgewogICAgICAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9v
dGgoKTsKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChIb3Jpem9udGFsU2Nyb2xs
YmFyLCBTY3JvbGxCeVBpeGVsLCAxLCBkZWx0YVgpOwotICAgICAgICBtX3Ntb290aEFuaW1hdGlv
bi0+c2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCBkZWx0YVkpOwor
ICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbChIb3Jpem9udGFs
U2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwgMSwgZGVs
dGFYKTsKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0YXJ0QW5pbWF0ZWRTY3JvbGwoVmVy
dGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCAx
LCBkZWx0YVkpOwogICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5k
bGVkKCk7CiAgICAgfQogI2VuZGlmCkBAIC0yMTYsNiArMTk2LDMxIEBAIGZsb2F0IFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpwYWdlU2NhbGVGYWN0b3IoKQogICAg
ICAgICBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdO
b2RlKCkpLmZyYW1lU2NhbGVGYWN0b3IoKSA6IDEuOwogfQogCit2b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Ny
b2xsQW5pbWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQorewor
I2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIGlmICgmYW5pbWF0aW9uID09IG1fa2lu
ZXRpY0FuaW1hdGlvbi5nZXQoKSkgeworICAgICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCisg
ICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOworICAgIH0KKyNlbmRpZgorICAg
IGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVVcGRhdGVTY29wZSgpOworICAgIHNjcm9sbGluZ05v
ZGUoKS5zY3JvbGxUbyhwb3NpdGlvbik7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRp
b24mKQoreworfQorCitTY3JvbGxFeHRlbnRzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVOaWNvc2lhOjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYp
Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgSW50UG9pbnQobWluaW11bVNjcm9sbFBvc2l0aW9u
KCkpLAorICAgICAgICBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSksCisgICAgICAg
IEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpCisgICAgfTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5J
Q09TSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVOaWNvc2lhLmgKaW5kZXggZDFhZDI3M2FhYmZmMTAwYWVmN2JkOTA1MDJkMmVhYTk2YzFi
YjlkMy4uNjllZWIxZWU2MDYxMTVmM2IwNzE1OWM1NjI3YmFkZTE4YTJiZTE3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEu
aApAQCAtMzEsNiArMzEsNyBAQAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShO
SUNPU0lBKQogCiAjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJT
Y3JvbGxBbmltYXRpb24uaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZS5oIgogI2luY2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgogCkBAIC00NCw3
ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZSB7CitjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
Tmljb3NpYSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLCBwdWJs
aWMgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYShTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZSYsIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSgpOwpAQCAtNjYsMTEgKzY3LDE2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKICNlbmRp
ZgogCisgICAgLy8gU2Nyb2xsQW5pbWF0aW9uQ2xpZW50CisgICAgdm9pZCBzY3JvbGxBbmltYXRp
b25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxvYXRQb2ludCYgY3VycmVudFBv
c2l0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmlt
YXRpb24mKSBmaW5hbDsKKyAgICBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHNGb3JBbmltYXRp
b24oU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7CisKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJ
TkcpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+IG1fa2luZXRp
Y0FuaW1hdGlvbjsKICNlbmRpZgogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIHN0
ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb24+IG1fc21vb3RoQW5pbWF0aW9uOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25TbW9vdGg+IG1fc21vb3RoQW5pbWF0aW9uOwog
I2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCmlu
ZGV4IDAwNGJiYzZiNjM4MDJiYzBlOTk5Yjk2YjZkZDYzNTIyZmU4M2M3NmUuLmZkM2U0ZjVkNzAy
MzM3ZDk3ZjBjZjdhYjc4ODQxMzM2YTEzZjFhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvbi5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxNiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTYg
KzI0LDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBTY3JvbGxBbmltYXRpb25faAotI2RlZmluZSBTY3JvbGxBbmltYXRpb25faAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRQb2ludDsKLWNsYXNz
IFNjcm9sbGFibGVBcmVhOwotZW51bSBjbGFzcyBTY3JvbGxDbGFtcGluZyA6IGJvb2w7CitjbGFz
cyBTY3JvbGxBbmltYXRpb247CiAKIHN0cnVjdCBTY3JvbGxFeHRlbnRzIHsKICAgICBTY3JvbGxQ
b3NpdGlvbiBtaW5pbXVtU2Nyb2xsUG9zaXRpb247CkBAIC00MCwxOSArNDAsMzIgQEAgc3RydWN0
IFNjcm9sbEV4dGVudHMgewogICAgIEludFNpemUgdmlzaWJsZVNpemU7CiB9OwogCitjbGFzcyBT
Y3JvbGxBbmltYXRpb25DbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflNjcm9sbEFuaW1h
dGlvbkNsaWVudCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxBbmltYXRp
b25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxvYXRQb2ludCYgY3VycmVudFBv
c2l0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3Jv
bGxBbmltYXRpb24mKSA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVu
dHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgPSAwOworfTsKKwogY2xhc3MgU2Nyb2xs
QW5pbWF0aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB2
aXJ0dWFsIH5TY3JvbGxBbmltYXRpb24oKSB7IH07Ci0gICAgdmlydHVhbCBib29sIHNjcm9sbChT
Y3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IC8qIHN0ZXAgKi8s
IGZsb2F0IC8qIG11bHRpcGxpZXIgKi8pIHsgcmV0dXJuIHRydWU7IH07Ci0gICAgdmlydHVhbCB2
b2lkIHNjcm9sbChjb25zdCBGbG9hdFBvaW50JikgeyB9OworICAgIFNjcm9sbEFuaW1hdGlvbihT
Y3JvbGxBbmltYXRpb25DbGllbnQmIGNsaWVudCkKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQp
CisgICAgeyB9CisgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uKCkgPSBkZWZhdWx0OworCiAg
ICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpc2li
bGVMZW5ndGhzKCkgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50UG9zaXRpb24oY29u
c3QgRmxvYXRQb2ludCYpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgc2VydmljZUFuaW1hdGlvbigp
IHsgfTsKICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMoKSB7IH07CisgICAgCisgICAgLy8gRklYTUU6IE5v
LW9wLiBOZWVkIHRvIHVzZSB0aGlzIGluc3RlYWQgb2Ygc3ViY2xhc3NlcyBoYXZpbmcgdGltZXJz
LgorICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKCkgeyB9OworCitwcm90ZWN0ZWQ6
CisgICAgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBtX2NsaWVudDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNjcm9sbEFuaW1hdGlvbl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCmluZGV4IDIxOGRi
YWEwZTVlNzNmMTIwZTY0YThiODgxYzc3ZDdiNzBiYWQxZDMuLjk1M2NlYjk0NGJhMmRlYmIzMDhi
OWYwM2VhNWQ5OGY4OWFkODMzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTEyLDkgKzExMyw4IEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6UGVyQXhpc0Rh
dGE6OmFuaW1hdGVTY3JvbGwoU2Vjb25kcyB0aW1lRGVsdGEpCiAgICAgcmV0dXJuIG1fdmVsb2Np
dHk7CiB9CiAKLVNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWMo
U2Nyb2xsRXh0ZW50c0NhbGxiYWNrJiYgc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uLCBOb3RpZnlQb3Np
dGlvbkNoYW5nZWRDYWxsYmFjayYmIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKQotICAg
IDogbV9zY3JvbGxFeHRlbnRzRnVuY3Rpb24oV1RGTW92ZShzY3JvbGxFeHRlbnRzRnVuY3Rpb24p
KQotICAgICwgbV9ub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbihXVEZNb3ZlKG5vdGlmeVBv
c2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKSkKK1Njcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFu
aW1hdGlvbktpbmV0aWMoU2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCisgICAgOiBTY3Jv
bGxBbmltYXRpb24oY2xpZW50KQogICAgICwgbV9hbmltYXRpb25UaW1lcihSdW5Mb29wOjpjdXJy
ZW50KCksIHRoaXMsICZTY3JvbGxBbmltYXRpb25LaW5ldGljOjphbmltYXRpb25UaW1lckZpcmVk
KQogewogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCkBAIC0xNjMsMTIgKzE2MywxMyBAQCBGbG9h
dFBvaW50IFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmNvbXB1dGVWZWxvY2l0eSgpCiAgICAgZm9y
IChjb25zdCBhdXRvJiBzY3JvbGxFdmVudCA6IG1fc2Nyb2xsSGlzdG9yeSkKICAgICAgICAgYWNj
dW1EZWx0YSArPSBGbG9hdFBvaW50KHNjcm9sbEV2ZW50LmRlbHRhWCgpLCBzY3JvbGxFdmVudC5k
ZWx0YVkoKSk7CiAKKyAgICAvLyBGSVhNRTogSXQncyBvZGQgdGhhdCBjb21wdXRlVmVsb2NpdHko
KSBoYXMgdGhlIHNpZGUgZWZmZWN0IG9mIGNsZWFyaW5nIGhpc3RvcnkuCiAgICAgbV9zY3JvbGxI
aXN0b3J5LmNsZWFyKCk7CiAKICAgICByZXR1cm4gRmxvYXRQb2ludChhY2N1bURlbHRhLngoKSAq
IC0xIC8gKGxhc3QgLSBmaXJzdCkudmFsdWUoKSwgYWNjdW1EZWx0YS55KCkgKiAtMSAvIChsYXN0
IC0gZmlyc3QpLnZhbHVlKCkpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0
YXJ0KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYg
dmVsb2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKQorYm9vbCBTY3JvbGxB
bmltYXRpb25LaW5ldGljOjpzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShj
b25zdCBGbG9hdFBvaW50JiBpbml0aWFsUG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9j
aXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCkKIHsKICAgICBzdG9wKCk7CiAK
QEAgLTE3NiwxMSArMTc3LDExIEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnQo
Y29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbFBvc2l0aW9uLCBjb25zdCBGbG9hCiAgICAgICAgIG1f
cG9zaXRpb24gPSBpbml0aWFsUG9zaXRpb247CiAgICAgICAgIG1faG9yaXpvbnRhbERhdGEgPSBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIG1fdmVydGljYWxEYXRhID0gc3RkOjpudWxsb3B0OwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBhdXRvIGRl
bHRhID0gZGVsdGFUb05leHRGcmFtZSgpOwotICAgIGF1dG8gZXh0ZW50cyA9IG1fc2Nyb2xsRXh0
ZW50c0Z1bmN0aW9uKCk7CisgICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50
c0ZvckFuaW1hdGlvbigqdGhpcyk7CiAKICAgICBhdXRvIGFjY3VtdWxhdGVWZWxvY2l0eSA9IFsm
XShkb3VibGUgdmVsb2NpdHksIHN0ZDo6b3B0aW9uYWw8UGVyQXhpc0RhdGE+IGF4aXNEYXRhKSAt
PiBkb3VibGUgewogICAgICAgICBpZiAoYXhpc0RhdGEgJiYgYXhpc0RhdGEudmFsdWUoKS5hbmlt
YXRlU2Nyb2xsKGRlbHRhKSkgewpAQCAtMjE0LDYgKzIxNSw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYzo6c3RhcnQoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbFBvc2l0aW9uLCBjb25z
dCBGbG9hCiAgICAgbV9wb3NpdGlvbiA9IGluaXRpYWxQb3NpdGlvbjsKICAgICBtX3N0YXJ0VGlt
ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gdGlja1RpbWUgLyAyLjsKICAgICBhbmltYXRpb25U
aW1lckZpcmVkKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYzo6YW5pbWF0aW9uVGltZXJGaXJlZCgpCkBAIC0yMzMsNyArMjM1LDcgQEAgdm9pZCBT
Y3JvbGxBbmltYXRpb25LaW5ldGljOjphbmltYXRpb25UaW1lckZpcmVkKCkKICAgICBkb3VibGUg
eCA9IG1faG9yaXpvbnRhbERhdGEgPyBtX2hvcml6b250YWxEYXRhLnZhbHVlKCkucG9zaXRpb24o
KSA6IG1fcG9zaXRpb24ueCgpOwogICAgIGRvdWJsZSB5ID0gbV92ZXJ0aWNhbERhdGEgPyBtX3Zl
cnRpY2FsRGF0YS52YWx1ZSgpLnBvc2l0aW9uKCkgOiBtX3Bvc2l0aW9uLnkoKTsKICAgICBtX3Bv
c2l0aW9uID0gRmxvYXRQb2ludCh4LCB5KTsKLSAgICBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1
bmN0aW9uKEZsb2F0UG9pbnQobV9wb3NpdGlvbikpOworICAgIG1fY2xpZW50LnNjcm9sbEFuaW1h
dGlvbkRpZFVwZGF0ZSgqdGhpcywgRmxvYXRQb2ludChtX3Bvc2l0aW9uKSk7CiB9CiAKIFNlY29u
ZHMgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6ZGVsdGFUb05leHRGcmFtZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKaW5kZXggZmM0ZmFi
MWU5ZjQzMWEzOGNhN2FiMWM2ZTk5NjJkOGNiYzFiYzZjNS4uMzgxODViYmUyMTEyODVkY2UyNmRl
NDM0ZWFkOWFmNzY5YmI0NzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbktpbmV0aWMuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU3
LDI3ICs1OCwyMyBAQCBwcml2YXRlOgogICAgIH07CiAKIHB1YmxpYzoKLSAgICB1c2luZyBTY3Jv
bGxFeHRlbnRzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPFNjcm9sbEV4dGVudHModm9pZCk+Owot
ICAgIHVzaW5nIE5vdGlmeVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2
b2lkKEZsb2F0UG9pbnQmJik+OwotCi0gICAgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYyhTY3JvbGxF
eHRlbnRzQ2FsbGJhY2smJiwgTm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2smJik7CisgICAg
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYyhTY3JvbGxBbmltYXRpb25DbGllbnQmKTsKICAgICB2aXJ0
dWFsIH5TY3JvbGxBbmltYXRpb25LaW5ldGljKCk7CiAKKyAgICBib29sIHN0YXJ0QW5pbWF0ZWRT
Y3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlv
biwgY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlW
U2Nyb2xsKTsKKworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIGJvb2wgaXNBY3RpdmUoKSBj
b25zdCBmaW5hbDsKKwogICAgIHZvaWQgYXBwZW5kVG9TY3JvbGxIaXN0b3J5KGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYpOwogICAgIHZvaWQgY2xlYXJTY3JvbGxIaXN0b3J5KCk7Ci0gICAgRmxv
YXRQb2ludCBjb21wdXRlVmVsb2NpdHkoKTsKIAotICAgIHZvaWQgc3RhcnQoY29uc3QgRmxvYXRQ
b2ludCYgaW5pdGlhbFBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgYm9vbCBt
YXlIU2Nyb2xsLCBib29sIG1heVZTY3JvbGwpOwotICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwot
ICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFBvaW50IGNvbXB1
dGVWZWxvY2l0eSgpOwogCiBwcml2YXRlOgogICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZCgp
OwogICAgIFNlY29uZHMgZGVsdGFUb05leHRGcmFtZSgpOwogCi0gICAgU2Nyb2xsRXh0ZW50c0Nh
bGxiYWNrIG1fc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uOwotICAgIE5vdGlmeVBvc2l0aW9uQ2hhbmdl
ZENhbGxiYWNrIG1fbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb247Ci0KICAgICBzdGQ6Om9w
dGlvbmFsPFBlckF4aXNEYXRhPiBtX2hvcml6b250YWxEYXRhOwogICAgIHN0ZDo6b3B0aW9uYWw8
UGVyQXhpc0RhdGE+IG1fdmVydGljYWxEYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAppbmRleCA5NWZlOGJiYWFiMmY1NjI5ZDBl
YTYzYmUzODM3ZjMxMWYxZWJjYWViLi45YmYzNDZlMGY0OGZmNWE4ZTAyMjdhNTAzYmVhNTQ4NDhh
Yzc1YzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
blNtb290aC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IEln
YWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChjKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDIsMjkgKzQyLDggQEAgc3RhdGljIGNv
bnN0IFNlY29uZHMgdGlja1RpbWUgPSAxX3MgLyBmcmFtZVJhdGU7CiBzdGF0aWMgY29uc3QgU2Vj
b25kcyBtaW5pbXVtVGltZXJJbnRlcnZhbCB7IDFfbXMgfTsKIHN0YXRpYyBjb25zdCBkb3VibGUg
c21vb3RoRmFjdG9yRm9yUHJvZ3JhbW1hdGljU2Nyb2xsID0gMTsKIAotU2Nyb2xsQW5pbWF0aW9u
U21vb3RoOjpQZXJBeGlzRGF0YTo6UGVyQXhpc0RhdGEoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBTY3JvbGxFeHRlbnRzQ2FsbGJh
Y2smIGV4dGVudHNDYWxsYmFjaykKLXsKLSAgICBhdXRvIGV4dGVudHMgPSBleHRlbnRzQ2FsbGJh
Y2soKTsKLSAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7Ci0gICAgY2FzZSBIb3Jpem9udGFsU2Ny
b2xsYmFyOgotICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbi54KCk7Ci0gICAgICAg
IHZpc2libGVMZW5ndGggPSBleHRlbnRzLnZpc2libGVTaXplLndpZHRoKCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgVmVydGljYWxTY3JvbGxiYXI6Ci0gICAgICAgIGN1cnJlbnRQb3NpdGlv
biA9IHBvc2l0aW9uLnkoKTsKLSAgICAgICAgdmlzaWJsZUxlbmd0aCA9IGV4dGVudHMudmlzaWJs
ZVNpemUuaGVpZ2h0KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGRlc2lyZWRQb3Np
dGlvbiA9IGN1cnJlbnRQb3NpdGlvbjsKLX0KLQotU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpTY3Jv
bGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsRXh0ZW50c0NhbGxiYWNrJiYgc2Nyb2xsRXh0ZW50c0Z1
bmN0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgTm90aWZ5UG9zaXRpb25DaGFuZ2Vk
Q2FsbGJhY2smJiBub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbiwgTm90aWZ5QW5pbWF0aW9u
U3RvcHBlZENhbGxiYWNrJiYgbm90aWZ5QW5pbWF0aW9uU3RvcHBlZEZ1bmN0aW9uKQotICAgIDog
bV9zY3JvbGxFeHRlbnRzRnVuY3Rpb24oV1RGTW92ZShzY3JvbGxFeHRlbnRzRnVuY3Rpb24pKQot
ICAgICwgbV9ub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbihXVEZNb3ZlKG5vdGlmeVBvc2l0
aW9uQ2hhbmdlZEZ1bmN0aW9uKSkKLSAgICAsIG1fbm90aWZ5QW5pbWF0aW9uU3RvcHBlZEZ1bmN0
aW9uKFdURk1vdmUobm90aWZ5QW5pbWF0aW9uU3RvcHBlZEZ1bmN0aW9uKSkKLSAgICAsIG1faG9y
aXpvbnRhbERhdGEoSG9yaXpvbnRhbFNjcm9sbGJhciwgcG9zaXRpb24sIG1fc2Nyb2xsRXh0ZW50
c0Z1bmN0aW9uKQotICAgICwgbV92ZXJ0aWNhbERhdGEoVmVydGljYWxTY3JvbGxiYXIsIHBvc2l0
aW9uLCBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbikKK1Njcm9sbEFuaW1hdGlvblNtb290aDo6U2Ny
b2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbEFuaW1hdGlvbkNsaWVudCYgY2xpZW50KQorICAgIDog
U2Nyb2xsQW5pbWF0aW9uKGNsaWVudCkKICAgICAsIG1fYW5pbWF0aW9uVGltZXIoUnVuTG9vcDo6
Y3VycmVudCgpLCB0aGlzLCAmU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRpb25UaW1lckZp
cmVkKQogewogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCkBAIC03MiwxMSArNTEsMTUgQEAgU2Ny
b2xsQW5pbWF0aW9uU21vb3RoOjpTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsRXh0ZW50c0Nh
bGxiYWNrJiYgc2Nyb2xsRXh0ZW4KICNlbmRpZgogfQogCi1ib29sIFNjcm9sbEFuaW1hdGlvblNt
b290aDo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllcikKK1Njcm9s
bEFuaW1hdGlvblNtb290aDo6flNjcm9sbEFuaW1hdGlvblNtb290aCgpID0gZGVmYXVsdDsKKwor
Ym9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0QW5pbWF0ZWRTY3JvbGwoU2Nyb2xsYmFy
T3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBj
b25zdCBGbG9hdFBvaW50JiBmcm9tUG9zaXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxp
ZXIpCiB7CiAgICAgZmxvYXQgbWluU2Nyb2xsUG9zaXRpb247CiAgICAgZmxvYXQgbWF4U2Nyb2xs
UG9zaXRpb247Ci0gICAgYXV0byBleHRlbnRzID0gbV9zY3JvbGxFeHRlbnRzRnVuY3Rpb24oKTsK
KyAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0
aGlzKTsKKyAgICBpbml0aWFsaXplQXhlc0RhdGEoZXh0ZW50cywgZnJvbVBvc2l0aW9uKTsKKwog
ICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIG1p
blNjcm9sbFBvc2l0aW9uID0gZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRpb24ueCgpOwogICAg
ICAgICBtYXhTY3JvbGxQb3NpdGlvbiA9IGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9uLngo
KTsKQEAgLTkzLDQxICs3Niw0MCBAQCBib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c2Nyb2xs
KFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudQogICAgIHJldHVy
biBuZWVkVG9TY3JvbGw7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzY3JvbGwo
Y29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCitib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6
c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oY29uc3QgRmxvYXRQb2ludCYgZnJvbVBv
c2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvblBvc2l0aW9uKQogewogICAgIFNj
cm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gU2Nyb2xsQnlQYWdlOwotICAgIGF1dG8gZXh0
ZW50cyA9IG1fc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKCk7Ci0gICAgYm9vbCBuZWVkVG9TY3JvbGwg
PSB1cGRhdGVQZXJBeGlzRGF0YShtX2hvcml6b250YWxEYXRhLCBncmFudWxhcml0eSwgcG9zaXRp
b24ueCgpLCBleHRlbnRzLm1pbmltdW1TY3JvbGxQb3NpdGlvbi54KCksIGV4dGVudHMubWF4aW11
bVNjcm9sbFBvc2l0aW9uLngoKSwgc21vb3RoRmFjdG9yRm9yUHJvZ3JhbW1hdGljU2Nyb2xsKTsK
KyAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0
aGlzKTsKKyAgICBpbml0aWFsaXplQXhlc0RhdGEoZXh0ZW50cywgZnJvbVBvc2l0aW9uKTsKKyAg
ICBib29sIG5lZWRUb1Njcm9sbCA9IHVwZGF0ZVBlckF4aXNEYXRhKG1faG9yaXpvbnRhbERhdGEs
IGdyYW51bGFyaXR5LCBkZXN0aW5hdGlvblBvc2l0aW9uLngoKSwgZXh0ZW50cy5taW5pbXVtU2Ny
b2xsUG9zaXRpb24ueCgpLCBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlvbi54KCksIHNtb290
aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCk7CiAgICAgbmVlZFRvU2Nyb2xsIHw9Ci0gICAg
ICAgIHVwZGF0ZVBlckF4aXNEYXRhKG1fdmVydGljYWxEYXRhLCBncmFudWxhcml0eSwgcG9zaXRp
b24ueSgpLCBleHRlbnRzLm1pbmltdW1TY3JvbGxQb3NpdGlvbi55KCksIGV4dGVudHMubWF4aW11
bVNjcm9sbFBvc2l0aW9uLnkoKSwgc21vb3RoRmFjdG9yRm9yUHJvZ3JhbW1hdGljU2Nyb2xsKTsK
KyAgICAgICAgdXBkYXRlUGVyQXhpc0RhdGEobV92ZXJ0aWNhbERhdGEsIGdyYW51bGFyaXR5LCBk
ZXN0aW5hdGlvblBvc2l0aW9uLnkoKSwgZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRpb24ueSgp
LCBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlvbi55KCksIHNtb290aEZhY3RvckZvclByb2dy
YW1tYXRpY1Njcm9sbCk7CiAgICAgaWYgKG5lZWRUb1Njcm9sbCAmJiAhaXNBY3RpdmUoKSkgewog
ICAgICAgICBtX3N0YXJ0VGltZSA9IG1faG9yaXpvbnRhbERhdGEuc3RhcnRUaW1lOwogICAgICAg
ICBhbmltYXRpb25UaW1lckZpcmVkKCk7CiAgICAgfQotfTsKKyAgICByZXR1cm4gbmVlZFRvU2Ny
b2xsOworfQogCiB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RvcCgpCiB7CiAgICAgbV9h
bmltYXRpb25UaW1lci5zdG9wKCk7Ci0gICAgbV9ub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rp
b24oKTsKKyAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRFbmQoKnRoaXMpOwogfQogCi12
b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6dXBkYXRlVmlzaWJsZUxlbmd0aHMoKQordm9pZCBT
Y3JvbGxBbmltYXRpb25TbW9vdGg6OnVwZGF0ZVNjcm9sbEV4dGVudHMoKQogewotICAgIGF1dG8g
ZXh0ZW50cyA9IG1fc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKCk7CisgICAgYXV0byBleHRlbnRzID0g
bV9jbGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbigqdGhpcyk7CiAgICAgbV9ob3Jpem9u
dGFsRGF0YS52aXNpYmxlTGVuZ3RoID0gZXh0ZW50cy52aXNpYmxlU2l6ZS53aWR0aCgpOwogICAg
IG1fdmVydGljYWxEYXRhLnZpc2libGVMZW5ndGggPSBleHRlbnRzLnZpc2libGVTaXplLmhlaWdo
dCgpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c2V0Q3VycmVudFBvc2l0aW9u
KGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQordm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6
OmluaXRpYWxpemVBeGVzRGF0YShjb25zdCBTY3JvbGxFeHRlbnRzJiBleHRlbnRzLCBjb25zdCBG
bG9hdFBvaW50JiBzdGFydFBvc2l0aW9uKQogewotICAgIHN0b3AoKTsKLSAgICBtX2hvcml6b250
YWxEYXRhID0gUGVyQXhpc0RhdGEocG9zaXRpb24ueCgpLCBtX2hvcml6b250YWxEYXRhLnZpc2li
bGVMZW5ndGgpOwotICAgIG1fdmVydGljYWxEYXRhID0gUGVyQXhpc0RhdGEocG9zaXRpb24ueSgp
LCBtX3ZlcnRpY2FsRGF0YS52aXNpYmxlTGVuZ3RoKTsKKyAgICBtX2hvcml6b250YWxEYXRhID0g
UGVyQXhpc0RhdGEoc3RhcnRQb3NpdGlvbi54KCksIGV4dGVudHMudmlzaWJsZVNpemUud2lkdGgo
KSk7CisgICAgbV92ZXJ0aWNhbERhdGEgPSBQZXJBeGlzRGF0YShzdGFydFBvc2l0aW9uLnkoKSwg
ZXh0ZW50cy52aXNpYmxlU2l6ZS5oZWlnaHQoKSk7CiB9CiAKLVNjcm9sbEFuaW1hdGlvblNtb290
aDo6flNjcm9sbEFuaW1hdGlvblNtb290aCgpID0gZGVmYXVsdDsKLQogc3RhdGljIGlubGluZSBk
b3VibGUgY3VydmVBdChTY3JvbGxBbmltYXRpb25TbW9vdGg6OkN1cnZlIGN1cnZlLCBkb3VibGUg
dCkKIHsKICAgICBzd2l0Y2ggKGN1cnZlKSB7CkBAIC00MzcsMTAgKzQxOSwxMCBAQCB2b2lkIFNj
cm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJGaXJlZCgpCiAKICAgICBpZiAoY29u
dGludWVBbmltYXRpb24pCiAgICAgICAgIHN0YXJ0TmV4dFRpbWVyKHN0ZDo6bWF4KG1pbmltdW1U
aW1lckludGVydmFsLCBkZWx0YVRvTmV4dEZyYW1lKSk7Ci0gICAgZWxzZQotICAgICAgICBtX25v
dGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbigpOwogCi0gICAgbV9ub3RpZnlQb3NpdGlvbkNo
YW5nZWRGdW5jdGlvbihGbG9hdFBvaW50KG1faG9yaXpvbnRhbERhdGEuY3VycmVudFBvc2l0aW9u
LCBtX3ZlcnRpY2FsRGF0YS5jdXJyZW50UG9zaXRpb24pKTsKKyAgICBtX2NsaWVudC5zY3JvbGxB
bmltYXRpb25EaWRVcGRhdGUoKnRoaXMsIHsgbV9ob3Jpem9udGFsRGF0YS5jdXJyZW50UG9zaXRp
b24sIG1fdmVydGljYWxEYXRhLmN1cnJlbnRQb3NpdGlvbiB9KTsKKyAgICBpZiAoIWNvbnRpbnVl
QW5pbWF0aW9uKQorICAgICAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRFbmQoKnRoaXMp
OwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnROZXh0VGltZXIoU2Vjb25k
cyBkZWxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvblNtb290aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21v
b3RoLmgKaW5kZXggZmJmNTMyOWIxMDBjMGQ5ODhjNjgyMWQ1ZTk0NDIwZTFjNTRmOWNmYy4uYmY2
MDJmZDg4NDE5NzM5OGUyNDkxZGIwNmI1MDlkNmVkMzMxNzljNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMiwxNiArMzMsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRmxvYXRQb2ludDsKLWNsYXNzIFNjcm9sbGFibGVBcmVhOwogZW51bSBjbGFzcyBTY3JvbGxD
bGFtcGluZyA6IGJvb2w7CiAKIGNsYXNzIFNjcm9sbEFuaW1hdGlvblNtb290aCBmaW5hbDogcHVi
bGljIFNjcm9sbEFuaW1hdGlvbiB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgU2Nyb2xsRXh0ZW50c0Nh
bGxiYWNrID0gV1RGOjpGdW5jdGlvbjxTY3JvbGxFeHRlbnRzKHZvaWQpPjsKLSAgICB1c2luZyBO
b3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChGbG9hdFBv
aW50JiYpPjsKLSAgICB1c2luZyBOb3RpZnlBbmltYXRpb25TdG9wcGVkQ2FsbGJhY2sgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQodm9pZCk+OwotCi0gICAgU2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9s
bEV4dGVudHNDYWxsYmFjayYmLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgTm90aWZ5UG9z
aXRpb25DaGFuZ2VkQ2FsbGJhY2smJiwgTm90aWZ5QW5pbWF0aW9uU3RvcHBlZENhbGxiYWNrJiYp
OworICAgIFNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxBbmltYXRpb25DbGllbnQmKTsKICAg
ICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKIAogICAgIGVudW0gY2xhc3MgQ3Vy
dmUgewpAQCAtNTIsMTkgKzQ4LDE2IEBAIHB1YmxpYzoKICAgICAgICAgQm91bmNlCiAgICAgfTsK
IAotcHJpdmF0ZToKLSAgICBib29sIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xs
R3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3Ao
KSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZVZpc2libGVMZW5ndGhzKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzZXRDdXJyZW50UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwot
ICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHN0cnVjdCBQZXJBeGlz
RGF0YSB7Ci0gICAgICAgIFBlckF4aXNEYXRhKCkgPSBkZWxldGU7CisgICAgYm9vbCBzdGFydEFu
aW1hdGVkU2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgY29u
c3QgRmxvYXRQb2ludCYgZnJvbVBvc2l0aW9uLCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVy
KTsKKyAgICBib29sIHN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmIGZyb21Qb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb25Qb3NpdGlv
bik7CiAKLSAgICAgICAgUGVyQXhpc0RhdGEoU2Nyb2xsYmFyT3JpZW50YXRpb24sIGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uLCBTY3JvbGxFeHRlbnRzQ2FsbGJhY2smKTsKKyAgICB2b2lkIHN0
b3AoKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMoKSBmaW5hbDsKKyAgICBi
b29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7CiAKK3ByaXZhdGU6CisgICAgc3RydWN0IFBlckF4
aXNEYXRhIHsKKyAgICAgICAgUGVyQXhpc0RhdGEoKSA9IGRlZmF1bHQ7CiAgICAgICAgIFBlckF4
aXNEYXRhKGZsb2F0IHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQogICAgICAgICAgICAgOiBjdXJyZW50
UG9zaXRpb24ocG9zaXRpb24pCiAgICAgICAgICAgICAsIGRlc2lyZWRQb3NpdGlvbihwb3NpdGlv
bikKQEAgLTk4LDE5ICs5MSwxOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCB1cGRhdGVQZXJBeGlz
RGF0YShQZXJBeGlzRGF0YSYsIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBuZXdQb3NpdGlvbiwg
ZmxvYXQgbWluU2Nyb2xsUG9zaXRpb24sIGZsb2F0IG1heFNjcm9sbFBvc2l0aW9uLCBkb3VibGUg
c21vb3RoRmFjdG9yID0gMSk7CiAgICAgYm9vbCBhbmltYXRlU2Nyb2xsKFBlckF4aXNEYXRhJiwg
TW9ub3RvbmljVGltZSBjdXJyZW50VGltZSk7CisgICAgCisgICAgdm9pZCBpbml0aWFsaXplQXhl
c0RhdGEoY29uc3QgU2Nyb2xsRXh0ZW50cyYsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9zaXRp
b24pOwogCiAgICAgdm9pZCByZXF1ZXN0QW5pbWF0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQg
c3RhcnROZXh0VGltZXIoU2Vjb25kcyBkZWxheSk7CiAgICAgdm9pZCBhbmltYXRpb25UaW1lckZp
cmVkKCk7CiAKLSAgICBTY3JvbGxFeHRlbnRzQ2FsbGJhY2sgbV9zY3JvbGxFeHRlbnRzRnVuY3Rp
b247Ci0gICAgTm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2sgbV9ub3RpZnlQb3NpdGlvbkNo
YW5nZWRGdW5jdGlvbjsKLSAgICBOb3RpZnlBbmltYXRpb25TdG9wcGVkQ2FsbGJhY2sgbV9ub3Rp
ZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rpb247Ci0KICAgICBQZXJBeGlzRGF0YSBtX2hvcml6b250
YWxEYXRhOwogICAgIFBlckF4aXNEYXRhIG1fdmVydGljYWxEYXRhOwogCiAgICAgTW9ub3Rvbmlj
VGltZSBtX3N0YXJ0VGltZTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCBoYXZlIHRpbWVyIGhl
cmUsIGFuZCBpbnN0ZWFkIHVzZSBzZXJ2aWNlQW5pbWF0aW9uKCkuCiAgICAgUnVuTG9vcDo6VGlt
ZXI8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPiBtX2FuaW1hdGlvblRpbWVyOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IDFhZWM5NmRjYjM1Yzkw
N2Y2ZjBkNmJjYjI1YmIyM2FjYjYxMDZiZmQuLmJmNjk5ZDFiMjViMDQ2MGI4NDlkZjkxYjljNGY0
ODdjOTg0NjYxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5j
cHAKQEAgLTU0LDIwICs1NCw3IEBAIFNjcm9sbEFuaW1hdG9yOjpTY3JvbGxBbmltYXRvcihTY3Jv
bGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBtX3Njcm9sbGFibGVBcmVhKHNjcm9s
bGFibGVBcmVhKQogICAgICwgbV9zY3JvbGxDb250cm9sbGVyKCp0aGlzKQogICAgICwgbV9zY3Jv
bGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXIoKnRoaXMsICZTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
Q29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQpCi0gICAgLCBtX3Njcm9sbEFuaW1hdGlvbiht
YWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCi0gICAgICAgIFt0aGlzXSgpIC0+IFNj
cm9sbEV4dGVudHMgewotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JvbGxhYmxlQXJlYS5taW5p
bXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRp
b24oKSwgbV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpIH07Ci0gICAgICAgIH0sCi0gICAg
ICAgIG1fY3VycmVudFBvc2l0aW9uLAotICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0
aW9uKSB7Ci0gICAgICAgICAgICBGbG9hdFNpemUgZGVsdGEgPSBwb3NpdGlvbiAtIG1fY3VycmVu
dFBvc2l0aW9uOwotICAgICAgICAgICAgbV9jdXJyZW50UG9zaXRpb24gPSBXVEZNb3ZlKHBvc2l0
aW9uKTsKLSAgICAgICAgICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7Ci0gICAgICAg
ICAgICB1cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JPZmZzZXQoKTsKLSAgICAgICAgfSwK
LSAgICAgICAgW3RoaXNdIHsKLSAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2V0U2Nyb2xs
QmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6Ok5vdEluQW5pbWF0aW9uKTsKLSAg
ICAgICAgfSkpCisgICAgLCBtX3Njcm9sbEFuaW1hdGlvbihtYWtlVW5pcXVlPFNjcm9sbEFuaW1h
dGlvblNtb290aD4oKnRoaXMpKQogICAgICwgbV9rZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yKG1h
a2VVbmlxdWU8S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcj4oKnRoaXMsIG1fc2Nyb2xsQ29udHJv
bGxlcikpCiB7CiB9CkBAIC05OSwxMSArODYsOCBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpzY3Jv
bGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5CiAg
ICAgfQogCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpICYmICFQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpICYm
ICFiZWhhdmlvci5jb250YWlucyhTY3JvbGxCZWhhdmlvcjo6TmV2ZXJBbmltYXRlKSkgewotICAg
ICAgICBpZiAoIW1fc2Nyb2xsQW5pbWF0aW9uLT5pc0FjdGl2ZSgpKQotICAgICAgICAgICAgbV9z
Y3JvbGxBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihtX2N1cnJlbnRQb3NpdGlvbik7Ci0g
ICAgICAgIHJldHVybiBtX3Njcm9sbEFuaW1hdGlvbi0+c2Nyb2xsKG9yaWVudGF0aW9uLCBncmFu
dWxhcml0eSwgc3RlcCwgbXVsdGlwbGllcik7Ci0gICAgfQorICAgIGlmIChtX3Njcm9sbGFibGVB
cmVhLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpICYmICFiZWhhdmlvci5jb250YWlucyhTY3JvbGxC
ZWhhdmlvcjo6TmV2ZXJBbmltYXRlKSkKKyAgICAgICAgcmV0dXJuIG1fc2Nyb2xsQW5pbWF0aW9u
LT5zdGFydEFuaW1hdGVkU2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxhcml0eSwgbV9jdXJyZW50
UG9zaXRpb24sIHN0ZXAsIG11bHRpcGxpZXIpOwogI2VuZGlmCiAKICAgICByZXR1cm4gc2Nyb2xs
VG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY3VycmVudFBvc2l0aW9uKCkgKyBkZWx0YSk7CkBA
IC0xMjQsNyArMTA4LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldp
dGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24KICAgICBpZiAoYWRqdXN0
ZWRQb3NpdGlvbiA9PSBjdXJyZW50UG9zaXRpb24gJiYgYWRqdXN0ZWRQb3NpdGlvbiA9PSBzY3Jv
bGxhYmxlQXJlYSgpLnNjcm9sbFBvc2l0aW9uKCkgJiYgIXNjcm9sbGFibGVBcmVhKCkuc2Nyb2xs
T3JpZ2luQ2hhbmdlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3Njcm9sbEFu
aW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24pOworICAgIG1fc2Ny
b2xsQW5pbWF0aW9uLT5zdG9wKCk7CiAgICAgbV9jdXJyZW50UG9zaXRpb24gPSBhZGp1c3RlZFBv
c2l0aW9uOwogICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChhZGp1c3RlZFBvc2l0aW9uIC0gY3Vy
cmVudFBvc2l0aW9uKTsKICAgICB1cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JPZmZzZXQo
KTsKQEAgLTE0Miw4ICsxMjYsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0
aW9uV2l0aEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdQb3NpdGlvbgogICAgIGlmICgh
cG9zaXRpb25DaGFuZ2VkICYmICFzY3JvbGxhYmxlQXJlYSgpLnNjcm9sbE9yaWdpbkNoYW5nZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9zY3JvbGxBbmltYXRpb24tPnNldEN1
cnJlbnRQb3NpdGlvbihtX2N1cnJlbnRQb3NpdGlvbik7Ci0gICAgbV9zY3JvbGxBbmltYXRpb24t
PnNjcm9sbChuZXdQb3NpdGlvbik7CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnN0YXJ0QW5pbWF0
ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKG1fY3VycmVudFBvc2l0aW9uLCBuZXdQb3NpdGlvbik7CiAg
ICAgc2Nyb2xsYWJsZUFyZWEoKS5zZXRTY3JvbGxCZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlv
clN0YXR1czo6SW5Ob25OYXRpdmVBbmltYXRpb24pOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
MTUyLDcgKzEzNSw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnJldGFyZ2V0UnVubmluZ0FuaW1h
dGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdQb3NpdGlvbikKIHsKICAgICBBU1NFUlQoc2Nyb2xs
YWJsZUFyZWEoKS5jdXJyZW50U2Nyb2xsQmVoYXZpb3JTdGF0dXMoKSA9PSBTY3JvbGxCZWhhdmlv
clN0YXR1czo6SW5Ob25OYXRpdmVBbmltYXRpb24pOwogICAgIEFTU0VSVChtX3Njcm9sbEFuaW1h
dGlvbi0+aXNBY3RpdmUoKSk7Ci0gICAgbV9zY3JvbGxBbmltYXRpb24tPnNjcm9sbChuZXdQb3Np
dGlvbik7CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3Rp
bmF0aW9uKG1fY3VycmVudFBvc2l0aW9uLCBuZXdQb3NpdGlvbik7CiB9CiAKIEZsb2F0UG9pbnQg
U2Nyb2xsQW5pbWF0b3I6Om9mZnNldEZyb21Qb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3Np
dGlvbikKQEAgLTM3NSwyMiArMzU4LDIyIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmNhbmNlbEFu
aW1hdGlvbnMoKQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpjb250ZW50c1Jlc2l6ZWQoKSBjb25z
dAogewotICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT51cGRhdGVWaXNpYmxlTGVuZ3RocygpOworICAg
IG1fc2Nyb2xsQW5pbWF0aW9uLT51cGRhdGVTY3JvbGxFeHRlbnRzKCk7CiB9CiAKIHZvaWQgU2Ny
b2xsQW5pbWF0b3I6OndpbGxFbmRMaXZlUmVzaXplKCkKIHsKLSAgICBtX3Njcm9sbEFuaW1hdGlv
bi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKKyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+dXBkYXRl
U2Nyb2xsRXh0ZW50cygpOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpkaWRBZGRWZXJ0aWNh
bFNjcm9sbGJhcihTY3JvbGxiYXIqKQogewotICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT51cGRhdGVW
aXNpYmxlTGVuZ3RocygpOworICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT51cGRhdGVTY3JvbGxFeHRl
bnRzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmRpZEFkZEhvcml6b250YWxTY3JvbGxi
YXIoU2Nyb2xsYmFyKikKIHsKLSAgICBtX3Njcm9sbEFuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxl
bmd0aHMoKTsKKyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+dXBkYXRlU2Nyb2xsRXh0ZW50cygpOwog
fQogCiBGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjphZGp1c3RTY3JvbGxPZmZzZXRGb3JTbmFw
cGluZ0lmTmVlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCwgU2Nyb2xsU25hcFBvaW50U2Vs
ZWN0aW9uTWV0aG9kIG1ldGhvZCkKQEAgLTQyMiw1ICs0MDUsMjcgQEAgZmxvYXQgU2Nyb2xsQW5p
bWF0b3I6OmFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBwaW5nSWZOZWVkZWQoU2Nyb2xsRXZlbnRB
eGlzIGF4aXMKICAgICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmFkanVzdFNjcm9sbERlc3Rp
bmF0aW9uKGF4aXMsIG5ld09mZnNldCwgdmVsb2NpdHlJblNjcm9sbEF4aXMsIG9yaWdpbmFsT2Zm
c2V0KTsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRl
KFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIEZs
b2F0U2l6ZSBkZWx0YSA9IHBvc2l0aW9uIC0gbV9jdXJyZW50UG9zaXRpb247CisgICAgbV9jdXJy
ZW50UG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICBub3RpZnlQb3NpdGlvbkNoYW5nZWQoZGVsdGEp
OworICAgIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9mZnNldCgpOworfQorCit2b2lk
IFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikK
K3sKKyAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJl
aGF2aW9yU3RhdHVzOjpOb3RJbkFuaW1hdGlvbik7Cit9CisKK1Njcm9sbEV4dGVudHMgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikKK3sK
KyAgICByZXR1cm4geworICAgICAgICBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3Np
dGlvbigpLAorICAgICAgICBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxQb3NpdGlvbigp
LAorICAgICAgICBtX3Njcm9sbGFibGVBcmVhLnZpc2libGVTaXplKCkKKyAgICB9OworfQorCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5oCmluZGV4IGViYjQ3NzExMWUwNzA5NTRiODVhZGM1Yjk1NjViOGEyMzM3OTE5NjMuLmEx
MWU5MGUxMWQ3NTk2ZjQxZTYyODgyOTI3NTU1MWQ3MmRlNWJkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAi
RmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUg
IlNjcm9sbEFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3Iu
aCIKQEAgLTQ0LDE0ICs0NSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9hdFBv
aW50OwogY2xhc3MgS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcjsKIGNsYXNzIFBsYXRmb3JtVG91
Y2hFdmVudDsKLWNsYXNzIFNjcm9sbEFuaW1hdGlvbjsKK2NsYXNzIFNjcm9sbEFuaW1hdGlvblNt
b290aDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogY2xhc3MgU2Nyb2xsYmFyOwogY2xhc3MgV2hl
ZWxFdmVudFRlc3RNb25pdG9yOwogCiBjbGFzcyBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRp
bWVyOwogCi1jbGFzcyBTY3JvbGxBbmltYXRvciA6IHByaXZhdGUgU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXJDbGllbnQgeworY2xhc3MgU2Nyb2xsQW5pbWF0b3IgOiBwcml2YXRlIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyQ2xpZW50LCBwdWJsaWMgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmKTsKQEAgLTEz
Myw2ICsxMzQsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGhvcml6b250YWxTY3Jv
bGxiYXJTdGF0ZUZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAg
ICAgdmlydHVhbCBTdHJpbmcgdmVydGljYWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcoKSBjb25z
dCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAKKyAgICAvLyBTY3JvbGxBbmltYXRpb25DbGll
bnQKKyAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBj
b25zdCBGbG9hdFBvaW50JiBjdXJyZW50UG9zaXRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgc2Ny
b2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9sbEFuaW1hdGlvbiYpIG92ZXJyaWRlOworICAgIFNjcm9s
bEV4dGVudHMgc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKSBvdmVy
cmlkZTsKKwogICAgIHZvaWQgc2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKFJlZlB0cjxXaGVlbEV2
ZW50VGVzdE1vbml0b3I+JiYgdGVzdE1vbml0b3IpIHsgbV93aGVlbEV2ZW50VGVzdE1vbml0b3Ig
PSB0ZXN0TW9uaXRvcjsgfQogCiAgICAgRmxvYXRQb2ludCBhZGp1c3RTY3JvbGxPZmZzZXRGb3JT
bmFwcGluZ0lmTmVlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCwgU2Nyb2xsU25hcFBvaW50
U2VsZWN0aW9uTWV0aG9kKTsKQEAgLTE3OSw3ICsxODUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgVGlt
ZXIgbV9zY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXI7CiAgICAgRmxvYXRQb2ludCBtX2N1
cnJlbnRQb3NpdGlvbjsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb24+IG1f
c2Nyb2xsQW5pbWF0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25TbW9v
dGg+IG1fc2Nyb2xsQW5pbWF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxLZXlib2FyZFNjcm9s
bGluZ0FuaW1hdG9yPiBtX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJp
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2Vu
ZXJpYy5jcHAKaW5kZXggODkwODQyZGM2NjNmNjM5OTU3MmY4OTMxNDU4OWNiMjcyNzNkOWI4Mi4u
NzgyMzgzNWM0MTU4OTdlOTc1MGZlNDJjN2RlYWI4NTM2MmFjNTNmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
LmNwcApAQCAtNDgsMTYgKzQ4LDkgQEAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBT
Y3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmwKIAogU2Nyb2xs
QW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMoU2Nyb2xsYWJsZUFyZWEmIHNj
cm9sbGFibGVBcmVhKQogICAgIDogU2Nyb2xsQW5pbWF0b3Ioc2Nyb2xsYWJsZUFyZWEpCisgICAg
LCBtX2tpbmV0aWNBbmltYXRpb24obWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigq
dGhpcykpCiAgICAgLCBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lcigqdGhpcywgJlNj
cm9sbEFuaW1hdG9yR2VuZXJpYzo6b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyRmlyZWQp
CiB7Ci0gICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25L
aW5ldGljPigKLSAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7Ci0gICAgICAgICAg
ICByZXR1cm4geyBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Nj
cm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxQb3NpdGlvbigpLCBtX3Njcm9sbGFibGVBcmVhLnZp
c2libGVTaXplKCkgfTsKLSAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKEZsb2F0UG9pbnQmJiBw
b3NpdGlvbikgewotICAgICAgICAgICAgbV9zY3JvbGxBbmltYXRpb24tPnNldEN1cnJlbnRQb3Np
dGlvbihwb3NpdGlvbik7Ci0gICAgICAgICAgICB1cGRhdGVQb3NpdGlvbihXVEZNb3ZlKHBvc2l0
aW9uKSk7Ci0gICAgICAgIH0pOwogfQogCiBTY3JvbGxBbmltYXRvckdlbmVyaWM6On5TY3JvbGxB
bmltYXRvckdlbmVyaWMoKSA9IGRlZmF1bHQ7CkBAIC03NiwxMiArNjksMTIgQEAgYm9vbCBTY3Jv
bGxBbmltYXRvckdlbmVyaWM6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiBldmVudCkKICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xsSGlzdG9y
eShldmVudCk7CiAKICAgICBpZiAoZXZlbnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkpIHsK
LSAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydChtX2N1cnJlbnRQb3NpdGlvbiwgbV9r
aW5ldGljQW5pbWF0aW9uLT5jb21wdXRlVmVsb2NpdHkoKSwgbV9zY3JvbGxhYmxlQXJlYS5ob3Jp
em9udGFsU2Nyb2xsYmFyKCksIG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKSk7
CisgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0
aWFsVmVsb2NpdHkobV9jdXJyZW50UG9zaXRpb24sIG1fa2luZXRpY0FuaW1hdGlvbi0+Y29tcHV0
ZVZlbG9jaXR5KCksIG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigpLCBtX3Nj
cm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgaWYgKGV2ZW50LmlzVHJhbnNpdGlvbmluZ1RvTW9tZW50dW1TY3JvbGwoKSkg
ewogICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwotICAg
ICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0KG1fY3VycmVudFBvc2l0aW9uLCBldmVudC5z
d2lwZVZlbG9jaXR5KCksIG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigpLCBt
X3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCkpOworICAgICAgICBtX2tpbmV0aWNB
bmltYXRpb24tPnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KG1fY3VycmVu
dFBvc2l0aW9uLCBldmVudC5zd2lwZVZlbG9jaXR5KCksIG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpv
bnRhbFNjcm9sbGJhcigpLCBtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKQEAgLTg5LDEwICs4MiwxMCBAQCBi
b29sIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hl
ZWxFdmVudChldmVudCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp1cGRhdGVQ
b3NpdGlvbihGbG9hdFBvaW50JiYgcG9zaXRpb24pCit2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJp
Yzo6dXBkYXRlUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCiB7CiAgICAgRmxv
YXRTaXplIGRlbHRhID0gcG9zaXRpb24gLSBtX2N1cnJlbnRQb3NpdGlvbjsKLSAgICBtX2N1cnJl
bnRQb3NpdGlvbiA9IFdURk1vdmUocG9zaXRpb24pOworICAgIG1fY3VycmVudFBvc2l0aW9uID0g
cG9zaXRpb247CiAgICAgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKGRlbHRhKTsKICAgICB1cGRhdGVB
Y3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JPZmZzZXQoKTsKIH0KQEAgLTI4OCw1ICsyODEsMTggQEAg
dm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmxvY2tPdmVybGF5U2Nyb2xsYmFyU3RhdGVUb0hp
ZGRlbihib29sIHNob3VsZExvY2tTdGEKICAgICB9CiB9CiAKKy8vIEZJWE1FOiBDYW4gd2UganVz
dCB1c2UgdGhlIGJhc2UgY2xhc3MgaW1wbGVtZW50YXRpb24/Cit2b2lkIFNjcm9sbEFuaW1hdG9y
R2VuZXJpYzo6c2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYgYW5pbWF0
aW9uLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBpZiAoJmFuaW1hdGlvbiA9
PSBtX2tpbmV0aWNBbmltYXRpb24uZ2V0KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IENsYXJpZnkg
aG93IGFuaW1hdGlvbnMgaW50ZXJhY3QuIFRoZXJlIHNob3VsZCBuZXZlciBiZSBtb3JlIHRoYW4g
b25lIGFjdGl2ZSBhdCBhIHRpbWUuCisgICAgICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zdG9wKCk7
CisgICAgICAgIHVwZGF0ZVBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoYW5pbWF0
aW9uLCBwb3NpdGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
LmgKaW5kZXggZTA0NmM1MzFiYjg0YzJhY2ZmNWU4OTQ2NTU2ZGRjMTEyNWM5OGFmMy4uZjQ4OGYy
ZjVhMTk3Yjc0NjI1NGJkMjA3MDVmOGQ4NGQyMjkxMDI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCkBAIC02
MSw3ICs2MSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5Q29udGVudEFyZWFTY3JvbGxl
ZChjb25zdCBGbG9hdFNpemUmIGRlbHRhKSBvdmVycmlkZTsKICAgICB2b2lkIGxvY2tPdmVybGF5
U2Nyb2xsYmFyU3RhdGVUb0hpZGRlbihib29sKSBvdmVycmlkZTsKIAotICAgIHZvaWQgdXBkYXRl
UG9zaXRpb24oRmxvYXRQb2ludCYmKTsKKyAgICAvLyBTY3JvbGxBbmltYXRpb25DbGllbnQKKyAg
ICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBjb25zdCBG
bG9hdFBvaW50JiBjdXJyZW50UG9zaXRpb24pIG92ZXJyaWRlOworCisgICAgdm9pZCB1cGRhdGVQ
b3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jik7CiAKICAgICB2b2lkIG92ZXJsYXlTY3JvbGxiYXJB
bmltYXRpb25UaW1lckZpcmVkKCk7CiAgICAgdm9pZCBzaG93T3ZlcmxheVNjcm9sbGJhcnMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438494</attachid>
            <date>2021-09-17 11:41:13 -0700</date>
            <delta_ts>2021-09-17 14:43:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230385-20210917114112.patch</filename>
            <type>text/plain</type>
            <size>59834</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjMyYWZjNTY3ZmNmYTQ4
NmIxNWJiZTUxZTFkZjhjZjg5MDQ0Yjg0Yy4uZGEyYjMzZTAzMTQzNzQyZTJmZWQ4ZDg5ZTQzMzRh
ZmRhOGY2YWUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIxLTA5LTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgU2Nyb2xs
QW5pbWF0aW9uIGEgbGl0dGxlIG1vcmUgZ2VuZXJpYworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMzg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUHJlcGFyZSBmb3IgbmV3IFNjcm9sbEFuaW1hdGlvbiBz
dWJjbGFzc2VzIGJ5IG1ha2luZyBpdCBhIGxpdHRsZSBtb3JlIGdlbmVyaWMuIFJhdGhlcgorICAg
ICAgICB0aGFuIHRoZSBmdW5jdGlvbiBjYWxsYmFja3MsIHVzZSBhIHZpcnR1YWwgY2xpZW50IGNs
YXNzLCBpbXBsZW1lbnRlZCBieSBTY3JvbGxBbmltYXRvcgorICAgICAgICBhbmQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuIFJlbW92ZSB0aGUgZ2VuZXJpYyAnc2Ny
b2xsJyBtZXRob2RzCisgICAgICAgIGZyb20gdGhlIGJhc2UgY2xhc3MsIHNpbmNlIHRoZXkgb25s
eSBhcHBseSB0byBTY3JvbGxBbmltYXRpb25TbW9vdGggKGNsaWVudHMgbmVlZAorICAgICAgICB0
byBrZWVwIGRlcml2ZWQgY2xhc3MgcG9pbnRlcnMsIGFuZCBtb3N0IGFscmVhZHkgZG8pLgorICAg
ICAgICAKKyAgICAgICAgUmVtb3ZlIGFtYmlndWl0eSBhcm91bmQgdGhlIGN1cnJlbnRQb3NpdGlv
biBieSByZXF1aXJpbmcgaXQgZm9yIGV2ZXJ5ICdzdGFydCcgY2FsbC4KKyAgICAgICAgUmVtb3Zl
IGFtYmlndWl0eSBhcm91bmQgc2V0Q3VycmVudFBvc2l0aW9uKCkgYnkgcmVtb3ZpbmcgaXQuIENs
aWVudHMganVzdCBjYWxsIHN0b3AoKS4KKyAgICAgICAgUmVtb3ZlIGFtYmlndWl0eSBhcm91bmQg
cmV0YXJnZXRpbmcgYnkgbWFraW5nIGl0IGV4cGxpY2l0LgorICAgICAgICAKKyAgICAgICAgRG8g
cGVyLWF4aXMgc2V0dXAgd2hlbiBzdGFydGluZyBhbmltYXRpb25zLCBub3Qgd2hlbiBjcmVhdGlu
ZyBvbmUsIHNvIHRoZSBhbmltYXRpb24gc3RhcnRzCisgICAgICAgIG91dCBzdGF0ZWxlc3MuCisK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDogQnVpbGQgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2lu
ZXRpYy5jcHAgZm9yIG1hY09TLCBtb3N0bHkgdG8gY2F0Y2gKKyAgICAgICAgYnVpbGQgZXJyb3Jz
IChpdCdzIGN1cnJlbnRseSB1bnVzZWQpLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpyZXNldEN1cnJlbnRQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZW5zdXJl
U2Nyb2xsQW5pbWF0aW9uU21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3Jv
bGxBbmltYXRpb25EaWRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0aW9uOjpTY3JvbGxBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0aW9uOjp1cGRhdGVTY3JvbGxFeHRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdGlvbjo6c2VydmljZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRpb246On5TY3JvbGxBbmltYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0aW9uOjpzY3JvbGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0aW9uOjp1cGRhdGVWaXNpYmxlTGVuZ3Rocyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRpb246OnNldEN1cnJlbnRQb3NpdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpTY3JvbGxBbmltYXRpb25LaW5ldGljKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3Jv
bGxXaXRoSW5pdGlhbFZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlv
bktpbmV0aWM6OmFuaW1hdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0aW9uS2luZXRpYzo6c3RhcnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbktpbmV0aWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpT
Y3JvbGxBbmltYXRpb25TbW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoOjpzdGFydEFuaW1hdGVkU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdGlvblNtb290aDo6c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdG9wKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6dXBkYXRlU2Nyb2xsRXh0ZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OmluaXRpYWxpemVBeGVzRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlvblRpbWVyRmly
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpQZXJBeGlzRGF0
YTo6UGVyQXhpc0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
aW9uU21vb3RoOjpzY3JvbGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0aW9uU21vb3RoOjp1cGRhdGVWaXNpYmxlTGVuZ3Rocyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OnNldEN1cnJlbnRQb3NpdGlvbik6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmg6IFJlbmFtZSBz
b21lICJ0aW1lIiB2YXJpYWJsZXMgdG8gImR1cmF0aW9uIiBmb3IgY2xhcml0eQorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjpTY3JvbGxBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxUb1Bv
c2l0aW9uV2l0aG91dEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3I6OnJldGFyZ2V0UnVubmluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6Y29udGVudHNSZXNpemVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yOjp3aWxsRW5kTGl2ZVJlc2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvcjo6ZGlkQWRkVmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3I6OmRpZEFkZEhvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlkRW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0
aW9uKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptX2tleWJvYXJk
U2Nyb2xsaW5nQW5pbWF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVy
aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxB
bmltYXRvckdlbmVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
OjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2Vu
ZXJpYzo6dXBkYXRlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JH
ZW5lcmljOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dl
bmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmg6CisKIDIwMjEtMDktMTYgIFR5bGVyIFdpbGNv
Y2sgPHR3aWxjby5vQHByb3Rvbm1haWwuY29tPiBhbmQgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIGZvbnQtd2VpZ2h0IHNob3VsZCBhbHdheXMgc2Vy
aWFsaXplIGFzIGEgbnVtYmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJiODRiYWE1OTU0NWMzYTNmMjQ0
YzVmMjJmZWZlODIzMGZiZDcwZjIuLjc0OWZmY2IyODRmZThkOWFiZjhmZWMxNzQ4NzZmNGIzY2Zi
Y2VkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xODExLDYgKzE4MTEsNyBAQCBwbGF0Zm9ybS9SZWZl
cnJlclBvbGljeS5jcHAKIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKIHBsYXRm
b3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKIHBsYXRmb3JtL1NTTEtleUdlbmVyYXRv
ci5jcHAKK3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCiBwbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguY3BwCiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKIHBsYXRm
b3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAppbmRl
eCBlMjIyZjY2YjE1NmE4YjdmMjZiNWY5OGQ2NmU5ZDdhY2NhM2Q0ZDA2Li45ZGZkOGI2MWI0YWNi
NDU2ZDNkYzBhNGIxYjAwNjRhNDFiOGMzMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtNjIs
NyArNjIsNiBAQCBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVk
Tm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlLmNwcAogCi1wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAog
cGxhdGZvcm0vVXNlckFnZW50UXVpcmtzLmNwcAogCiBwbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJh
clRoZW1lQWR3YWl0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKaW5kZXggYjEwYzFlY2U1MjA3NWI3
NTM1ZGE1MWMyY2MzMTZkYzkzNDNmZDA4MS4uOGRhZDhjNzFjOGZlYTJhYmQzZjE5MTljMDRlOWRh
Mjc2OTRkODBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKQEAgLTU4LDcgKzU4LDYgQEAgcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBwYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lh
LmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAK
IAotcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKIHBsYXRmb3JtL1VzZXJBZ2Vu
dFF1aXJrcy5jcHAKIAogcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYzc1ODQzMDYxNzdkODY1YjQ5ZTE5YjdlMDM5ZGVkZjUwMGYxM2Q2ZC4uZTNiODJiNmQx
ODFiOWI2ZDRhYTNjNGZkY2NjYzUzY2U5ZjhlOGZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzUyLDYgKzM1Miw3IEBACiAJ
CTBGOTRGMzdFMjM2NjE2MjYwMDNBQTVDNyAvKiBTdHlsZVJ1bGVUeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk0RjM3QzIzNjYxMTMxMDAzQUE1
QzcgLyogU3R5bGVSdWxlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGOURBQTBGMUZEMUM2NkEwMDc5QzVCMiAvKiBET01HQ091dHB1dENv
bnN0cmFpbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGOURBQTBFMUZEMUM2NjQwMDc5QzVCMiAvKiBET01HQ091dHB1dENvbnN0cmFpbnQuaCAqLzsg
fTsKIAkJMEZBMjREN0ExNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkEyNEQ3ODE2
MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkE2MUIwRTI2RjQzMjEzMDAxQUFE
QjYgLyogU2Nyb2xsQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkE2MUIwQzI2RjQzMjEyMDAxQUFEQjYgLyogU2Nyb2xsQW5pbWF0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZC
NjI1MkYxOERFMUIxNTAwQTA3QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI2MjUyRDE4REUxQjE1MDBBMDdD
MDUgLyogR2VvbWV0cnlVdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRkI4ODkwRjE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5n
U3RhdGVTdGlja3lOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkI4ODkwRDE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlja3lO
b2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEZCQjVGQkUyNjA5OTFEMjAwNTQ1NzJDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3Rvcnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQkI1RkJE
MjYwOTVBOUMwMDU0NTcyQyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYzMjQsNiArNjMy
NSw3IEBACiAJCTBGQTBBMEU1MjNBRUFBMzUwMDBFRUI5NCAvKiBkaWFsb2cuY3NzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5jc3M7IHBhdGggPSBkaWFsb2cuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NMYXllclVwZGF0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEyNEQ3ODE2MkRGOTE5MDBB
M0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR3JhcGhpY3NMYXllclVwZGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZBNjFCMEMyNkY0MzIxMjAwMUFBREI2IC8qIFNjcm9sbEFuaW1hdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCMDY4OTQyNTI0M0I5MDAwMUU4RTc1IC8qIERpc3BsYXlU
ZXh0Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlUZXh0Qm94LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCMDY4OTYyNTI0M0I5MDAwMUU4RTc1IC8qIERpc3Bs
YXlUZXh0Qm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlUZXh0Qm94Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGQjYyNTJDMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0
aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9tZXRy
eVV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODA0Myw2ICsy
ODA0NSw3IEBACiAJCQkJNDExMjIzQjgyNjAyNDRGRTAwQjBBMEI2IC8qIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyLmggKi8sCiAJCQkJQkM4QUUzNEMxMkVBMDk2QTAwRUIzQUU2IC8q
IFNjcm9sbGFibGVBcmVhLmNwcCAqLywKIAkJCQlCQzhBRTM0RDEyRUEwOTZBMDBFQjNBRTYgLyog
U2Nyb2xsYWJsZUFyZWEuaCAqLywKKwkJCQkwRkE2MUIwQzI2RjQzMjEyMDAxQUFEQjYgLyogU2Ny
b2xsQW5pbWF0aW9uLmggKi8sCiAJCQkJMEZDNjkyQkMyNTdDMEY0MTAwOThFM0Y5IC8qIFNjcm9s
bEFuaW1hdGlvbktpbmV0aWMuY3BwICovLAogCQkJCTBGQzY5MkJBMjU3QzBGNDAwMDk4RTNGOSAv
KiBTY3JvbGxBbmltYXRpb25LaW5ldGljLmggKi8sCiAJCQkJMEZDNjkyQkQyNTdDMEY0MTAwOThF
M0Y5IC8qIFNjcm9sbEFuaW1hdGlvblNtb290aC5jcHAgKi8sCkBAIC0zMzEzMiw3ICszMzEzNSw2
IEBACiAJCQkJQkM2OTMyNzQwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjUyRkJCQkMwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93
Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjBDQkYzNjFENEJDRDBFMDA5MkU4OEUgLyog
SlNET01XaW5kb3dQcm9wZXJ0aWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTBCQ0Y1NjI2RjBD
RDhDMDA0MEIxMjQgLyogUlRDTG9jYWxTZXNzaW9uRGVzY3JpcHRpb25Jbml0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NUUwRTk0NDExMzNDODlGMDBCNENCMTAgLyogSlNET01XcmFwcGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QzQ1QzlEMzFFM0ZDQkQ3MDBBQUI1NTggLyogSlNET01XcmFwcGVy
Q2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQTgwNjFFMUUwM0I1ODUwMDhBMUYyNiAvKiBK
U0RvdWJsZVJhbmdlLmggaW4gSGVhZGVycyAqLywKQEAgLTM0NzQyLDYgKzM0NzQ0LDcgQEAKIAkJ
CQkwN0FCOTk2QjE4REEzQzAxMDAxODc3MUUgLyogUlRDSWNlU2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMTM1OTEwODFFN0REQzczMDBGMzA2MzAgLyogUlRDSWNlVHJhbnNwb3J0UG9saWN5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTM1OTEwOTFFN0REQzczMDBGMzA2MzAgLyogUlRDSWNl
VHJhbnNwb3J0U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMEJDRjU2MjZGMENEOEMwMDQw
QjEyNCAvKiBSVENMb2NhbFNlc3Npb25EZXNjcmlwdGlvbkluaXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxQzE0QkM2MjZERTZERTgwMDY4NUJGNSAvKiBSVENOZXR3b3JrTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDczNzk0RkUxOUY1ODY0RTAwRTVBMDQ1IC8qIFJUQ05vdGlmaWVyc01v
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mzc5NERFMTlFRTJDNTIwMEU1QTA0NSAvKiBSVENP
ZmZlckFuc3dlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ4MTQsNiArMzQ4MTcsNyBA
QAogCQkJCTE0MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBRTM0RjEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xs
YWJsZUFyZWEuaCBpbiBIZWFkZXJzICovLAogCQkJCTVEOTI1QjY4MEY2NEQ0REQwMEI4NDdGMCAv
KiBTY3JvbGxBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQTYxQjBFMjZGNDMyMTMw
MDFBQURCNiAvKiBTY3JvbGxBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNBM0JGNjdF
MTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYxNzc0ODAxMzc4Qjc3MjAwOURBNzZBIC8qIFNjcm9sbEFuaW1hdG9ySU9TLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0FFMUZBNzEyOTM5REI3MDA0Q0IwMjYgLyogU2Nyb2xsQW5pbWF0b3JNYWMu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAppbmRleCA2OWViMTExNGMxODAyZWE1MTU5ZDg0
ZDk4YjdmMzFmZmVhMGNjNTk0Li45ODg4ZGZiNmZhYWIzYzIwMmNlMDBmNGU4Yjc0MmVlNDI0MWQw
OWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVOaWNvc2lhLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpyZXNldEN1cnJlbnRQb3NpdGlvbigpCiB7CiAj
aWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCiAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQot
ICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHNjcm9sbGluZ05v
ZGUoKS5jdXJyZW50U2Nyb2xsUG9zaXRpb24oKSk7CisgICAgICAgIG1fc21vb3RoQW5pbWF0aW9u
LT5zdG9wKCk7CiAjZW5kaWYKIH0KIApAQCAtNjksNyArNjksNyBAQCB2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp1cGRhdGVWaXNpYmxlTGVuZ3RocygpCiB7
CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCiAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9u
KQotICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+dXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKKyAg
ICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnVwZGF0ZVNjcm9sbEV4dGVudHMoKTsKICNlbmRpZgog
fQogCkBAIC03OSwxOCArNzksNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCkKICAgICBpZiAobV9r
aW5ldGljQW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2tpbmV0aWNBbmltYXRp
b24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KAotICAgICAgICBbdGhpc10o
KSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJldHVybiB7IEludFBvaW50KG1pbmlt
dW1TY3JvbGxQb3NpdGlvbigpKSwgSW50UG9pbnQobWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpLCBJ
bnRTaXplKHNjcm9sbGFibGVBcmVhU2l6ZSgpKSB9OwotICAgICAgICB9LAotICAgICAgICBbdGhp
c10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcp
Ci0gICAgICAgICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgICAgICAgICAgbV9z
bW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7Ci0jZW5kaWYKLSAg
ICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVVcGRhdGVTY29wZSgpOwotICAgICAg
ICAgICAgc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbFRvKHBvc2l0aW9uKTsKLSAgICAgICAgfSk7Cisg
ICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGlj
PigqdGhpcyk7CiB9CiAjZW5kaWYKIApAQCAtMTAwLDE2ICs4OSw3IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvblNt
b290aCgpCiAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigK
LSAgICAgICAgW3RoaXNdKCkgLT4gU2Nyb2xsRXh0ZW50cyB7Ci0gICAgICAgICAgICByZXR1cm4g
eyBJbnRQb2ludChtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSksIEludFBvaW50KG1heGltdW1TY3Jv
bGxQb3NpdGlvbigpKSwgSW50U2l6ZShzY3JvbGxhYmxlQXJlYVNpemUoKSkgfTsKLSAgICAgICAg
fSwKLSAgICAgICAgY3VycmVudFNjcm9sbFBvc2l0aW9uKCksCi0gICAgICAgIFt0aGlzXShGbG9h
dFBvaW50JiYgcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVh
dGVVcGRhdGVTY29wZSgpOwotICAgICAgICAgICAgc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbFRvKHBv
c2l0aW9uKTsKLSAgICAgICAgfSwKLSAgICAgICAgW10geyB9KTsKKyAgICBtX3Ntb290aEFuaW1h
dGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigqdGhpcyk7CiB9CiAjZW5k
aWYKIApAQCAtMTI1LDEyICsxMDUsMTIgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpoYW5kbGVXaGVlbEUKICAgICBt
X2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xsSGlzdG9yeSh3aGVlbEV2ZW50KTsKICAg
ICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKICAgICBpZiAod2hlZWxFdmVudC5pc0VuZE9m
Tm9uTW9tZW50dW1TY3JvbGwoKSkgewotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0
KGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCBtX2tpbmV0aWNBbmltYXRpb24tPmNvbXB1dGVWZWxv
Y2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhciwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xs
YmFyKTsKKyAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0
aEluaXRpYWxWZWxvY2l0eShjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwgbV9raW5ldGljQW5pbWF0
aW9uLT5jb21wdXRlVmVsb2NpdHkoKSwgY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIsIGNhbkhh
dmVWZXJ0aWNhbFNjcm9sbGJhcik7CiAgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJT
Y3JvbGxIaXN0b3J5KCk7CiAgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6
OmhhbmRsZWQoKTsKICAgICB9CiAgICAgaWYgKHdoZWVsRXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9N
b21lbnR1bVNjcm9sbCgpKSB7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnQoY3Vy
cmVudFNjcm9sbFBvc2l0aW9uKCksIHdoZWVsRXZlbnQuc3dpcGVWZWxvY2l0eSgpLCBjYW5IYXZl
SG9yaXpvbnRhbFNjcm9sbGJhciwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAg
bV9raW5ldGljQW5pbWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0
eShjdXJyZW50U2Nyb2xsUG9zaXRpb24oKSwgd2hlZWxFdmVudC5zd2lwZVZlbG9jaXR5KCksIGNh
bkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyLCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIpOwogICAg
ICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwogICAgICAgICBy
ZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7CiAgICAgfQpAQCAtMTgy
LDggKzE2Miw4IEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFCiAjaWYgRU5BQkxFKFNNT09USF9T
Q1JPTExJTkcpCiAgICAgaWYgKG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkICYmICF3aGVlbEV2ZW50
Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSkgewogICAgICAgICBlbnN1cmVTY3JvbGxBbmlt
YXRpb25TbW9vdGgoKTsKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNjcm9sbChIb3Jpem9u
dGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCBkZWx0YVgpOwotICAgICAgICBtX3Ntb290
aEFuaW1hdGlvbi0+c2Nyb2xsKFZlcnRpY2FsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCAxLCBk
ZWx0YVkpOworICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbChI
b3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCBjdXJyZW50U2Nyb2xsUG9zaXRpb24o
KSwgMSwgZGVsdGFYKTsKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0YXJ0QW5pbWF0ZWRT
Y3JvbGwoVmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIGN1cnJlbnRTY3JvbGxQb3Np
dGlvbigpLCAxLCBkZWx0YVkpOwogICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVz
dWx0OjpoYW5kbGVkKCk7CiAgICAgfQogI2VuZGlmCkBAIC0yMTYsNiArMTk2LDMxIEBAIGZsb2F0
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpwYWdlU2NhbGVGYWN0
b3IoKQogICAgICAgICBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihz
Y3JvbGxpbmdOb2RlKCkpLmZyYW1lU2NhbGVGYWN0b3IoKSA6IDEuOwogfQogCit2b2lkIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmltYXRpb25EaWRV
cGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uKQoreworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIGlmICgmYW5pbWF0aW9u
ID09IG1fa2luZXRpY0FuaW1hdGlvbi5nZXQoKSkgeworICAgICAgICBpZiAobV9zbW9vdGhBbmlt
YXRpb24pCisgICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOworICAgIH0KKyNl
bmRpZgorICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVVcGRhdGVTY29wZSgpOworICAgIHNj
cm9sbGluZ05vZGUoKS5zY3JvbGxUbyhwb3NpdGlvbik7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3Jv
bGxBbmltYXRpb24mKQoreworfQorCitTY3JvbGxFeHRlbnRzIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFu
aW1hdGlvbiYpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgSW50UG9pbnQobWluaW11bVNjcm9s
bFBvc2l0aW9uKCkpLAorICAgICAgICBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSks
CisgICAgICAgIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpCisgICAgfTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykg
JiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhLmgKaW5kZXggZDFhZDI3M2FhYmZmMTAwYWVmN2JkOTA1MDJk
MmVhYTk2YzFiYjlkMy4uNjllZWIxZWU2MDYxMTVmM2IwNzE1OWM1NjI3YmFkZTE4YTJiZTE3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEuaApAQCAtMzEsNiArMzEsNyBAQAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
ICYmIFVTRShOSUNPU0lBKQogCiAjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKKyNp
bmNsdWRlICJTY3JvbGxBbmltYXRpb24uaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZS5oIgogI2luY2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgog
CkBAIC00NCw3ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEgOiBwdWJsaWMgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZSB7CitjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTmljb3NpYSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlLCBwdWJsaWMgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYShTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZSYsIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKTsKICAgICB2aXJ0dWFs
IH5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSgpOwpAQCAtNjYsMTEg
KzY3LDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgo
KTsKICNlbmRpZgogCisgICAgLy8gU2Nyb2xsQW5pbWF0aW9uQ2xpZW50CisgICAgdm9pZCBzY3Jv
bGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxvYXRQb2ludCYg
Y3VycmVudFBvc2l0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZEVuZChT
Y3JvbGxBbmltYXRpb24mKSBmaW5hbDsKKyAgICBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHNG
b3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7CisKICNpZiBFTkFCTEUoS0lORVRJ
Q19TQ1JPTExJTkcpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+
IG1fa2luZXRpY0FuaW1hdGlvbjsKICNlbmRpZgogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5H
KQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb24+IG1fc21vb3RoQW5pbWF0aW9u
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25TbW9vdGg+IG1fc21vb3RoQW5p
bWF0aW9uOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbi5oCmluZGV4IDAwNGJiYzZiNjM4MDJiYzBlOTk5Yjk2YjZkZDYzNTIyZmU4M2M3NmUuLjIx
NmUzYjA5M2YzM2EzMWM4YTk1NDRjYzdlZjYzYjNmODdjMGRlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjMsMTYgKzI0LDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBTY3JvbGxBbmltYXRpb25faAotI2RlZmluZSBTY3JvbGxBbmltYXRpb25f
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRQb2lu
dDsKLWNsYXNzIFNjcm9sbGFibGVBcmVhOwotZW51bSBjbGFzcyBTY3JvbGxDbGFtcGluZyA6IGJv
b2w7CitjbGFzcyBTY3JvbGxBbmltYXRpb247CiAKIHN0cnVjdCBTY3JvbGxFeHRlbnRzIHsKICAg
ICBTY3JvbGxQb3NpdGlvbiBtaW5pbXVtU2Nyb2xsUG9zaXRpb247CkBAIC00MCwxOSArNDAsMzMg
QEAgc3RydWN0IFNjcm9sbEV4dGVudHMgewogICAgIEludFNpemUgdmlzaWJsZVNpemU7CiB9Owog
CitjbGFzcyBTY3JvbGxBbmltYXRpb25DbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflNj
cm9sbEFuaW1hdGlvbkNsaWVudCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxvYXRQb2ludCYg
Y3VycmVudFBvc2l0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEFuaW1hdGlvbkRp
ZEVuZChTY3JvbGxBbmltYXRpb24mKSA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxFeHRlbnRzIHNj
cm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgPSAwOworfTsKKwogY2xh
c3MgU2Nyb2xsQW5pbWF0aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb24oKSB7IH07Ci0gICAgdmlydHVhbCBib29s
IHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IC8q
IHN0ZXAgKi8sIGZsb2F0IC8qIG11bHRpcGxpZXIgKi8pIHsgcmV0dXJuIHRydWU7IH07Ci0gICAg
dmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBGbG9hdFBvaW50JikgeyB9OworICAgIFNjcm9sbEFu
aW1hdGlvbihTY3JvbGxBbmltYXRpb25DbGllbnQmIGNsaWVudCkKKyAgICAgICAgOiBtX2NsaWVu
dChjbGllbnQpCisgICAgeyB9CisgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uKCkgPSBkZWZh
dWx0OworCisgICAgdmlydHVhbCBib29sIHJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmIG5ld0Rlc3RpbmF0aW9uKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpc2libGVMZW5ndGhzKCkgeyB9OwotICAgIHZp
cnR1YWwgdm9pZCBzZXRDdXJyZW50UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIHsgfTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2VydmljZUFuaW1hdGlvbigpIHsgfTsKICAgICB2aXJ0dWFsIGJvb2wg
aXNBY3RpdmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVu
dHMoKSB7IH07CisgICAgCisgICAgLy8gRklYTUU6IE5vLW9wLiBOZWVkIHRvIHVzZSB0aGlzIGlu
c3RlYWQgb2Ygc3ViY2xhc3NlcyBoYXZpbmcgdGltZXJzLgorICAgIHZpcnR1YWwgdm9pZCBzZXJ2
aWNlQW5pbWF0aW9uKCkgeyB9OworCitwcm90ZWN0ZWQ6CisgICAgU2Nyb2xsQW5pbWF0aW9uQ2xp
ZW50JiBtX2NsaWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IFNjcm9sbEFuaW1hdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRpb25LaW5ldGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvbktpbmV0aWMuY3BwCmluZGV4IDIxOGRiYWEwZTVlNzNmMTIwZTY0YThiODgxYzc3
ZDdiNzBiYWQxZDMuLjBjNTI5NzQ0NWZkZTg4NDAzNmY1NDdhMWZjZjRmMDFjNzJkZDBhOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMu
Y3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5M
LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTEyLDkgKzExMyw4IEBAIGJvb2wg
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3JvbGwoU2Vjb25k
cyB0aW1lRGVsdGEpCiAgICAgcmV0dXJuIG1fdmVsb2NpdHk7CiB9CiAKLVNjcm9sbEFuaW1hdGlv
bktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWMoU2Nyb2xsRXh0ZW50c0NhbGxiYWNrJiYg
c2Nyb2xsRXh0ZW50c0Z1bmN0aW9uLCBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayYmIG5v
dGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKQotICAgIDogbV9zY3JvbGxFeHRlbnRzRnVuY3Rp
b24oV1RGTW92ZShzY3JvbGxFeHRlbnRzRnVuY3Rpb24pKQotICAgICwgbV9ub3RpZnlQb3NpdGlv
bkNoYW5nZWRGdW5jdGlvbihXVEZNb3ZlKG5vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uKSkK
K1Njcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWMoU2Nyb2xsQW5p
bWF0aW9uQ2xpZW50JiBjbGllbnQpCisgICAgOiBTY3JvbGxBbmltYXRpb24oY2xpZW50KQogICAg
ICwgbV9hbmltYXRpb25UaW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZTY3JvbGxBbmlt
YXRpb25LaW5ldGljOjphbmltYXRpb25UaW1lckZpcmVkKQogewogI2lmIFVTRShHTElCX0VWRU5U
X0xPT1ApCkBAIC0xNjMsMTIgKzE2MywxMyBAQCBGbG9hdFBvaW50IFNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OmNvbXB1dGVWZWxvY2l0eSgpCiAgICAgZm9yIChjb25zdCBhdXRvJiBzY3JvbGxFdmVu
dCA6IG1fc2Nyb2xsSGlzdG9yeSkKICAgICAgICAgYWNjdW1EZWx0YSArPSBGbG9hdFBvaW50KHNj
cm9sbEV2ZW50LmRlbHRhWCgpLCBzY3JvbGxFdmVudC5kZWx0YVkoKSk7CiAKKyAgICAvLyBGSVhN
RTogSXQncyBvZGQgdGhhdCBjb21wdXRlVmVsb2NpdHkoKSBoYXMgdGhlIHNpZGUgZWZmZWN0IG9m
IGNsZWFyaW5nIGhpc3RvcnkuCiAgICAgbV9zY3JvbGxIaXN0b3J5LmNsZWFyKCk7CiAKICAgICBy
ZXR1cm4gRmxvYXRQb2ludChhY2N1bURlbHRhLngoKSAqIC0xIC8gKGxhc3QgLSBmaXJzdCkudmFs
dWUoKSwgYWNjdW1EZWx0YS55KCkgKiAtMSAvIChsYXN0IC0gZmlyc3QpLnZhbHVlKCkpOwogfQog
Ci12b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0KGNvbnN0IEZsb2F0UG9pbnQmIGlu
aXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGJvb2wgbWF5SFNjcm9s
bCwgYm9vbCBtYXlWU2Nyb2xsKQorYm9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzdGFydEFu
aW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFs
UG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJv
b2wgbWF5VlNjcm9sbCkKIHsKICAgICBzdG9wKCk7CiAKQEAgLTE3NiwxMSArMTc3LDExIEBAIHZv
aWQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnQoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlh
bFBvc2l0aW9uLCBjb25zdCBGbG9hCiAgICAgICAgIG1fcG9zaXRpb24gPSBpbml0aWFsUG9zaXRp
b247CiAgICAgICAgIG1faG9yaXpvbnRhbERhdGEgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1f
dmVydGljYWxEYXRhID0gc3RkOjpudWxsb3B0OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICBhdXRvIGRlbHRhID0gZGVsdGFUb05leHRGcmFtZSgp
OwotICAgIGF1dG8gZXh0ZW50cyA9IG1fc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKCk7CisgICAgYXV0
byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbigqdGhpcyk7CiAK
ICAgICBhdXRvIGFjY3VtdWxhdGVWZWxvY2l0eSA9IFsmXShkb3VibGUgdmVsb2NpdHksIHN0ZDo6
b3B0aW9uYWw8UGVyQXhpc0RhdGE+IGF4aXNEYXRhKSAtPiBkb3VibGUgewogICAgICAgICBpZiAo
YXhpc0RhdGEgJiYgYXhpc0RhdGEudmFsdWUoKS5hbmltYXRlU2Nyb2xsKGRlbHRhKSkgewpAQCAt
MjE0LDYgKzIxNSwxNiBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0KGNvbnN0
IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYQogICAgIG1fcG9zaXRpb24g
PSBpbml0aWFsUG9zaXRpb247CiAgICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3co
KSAtIHRpY2tUaW1lIC8gMi47CiAgICAgYW5pbWF0aW9uVGltZXJGaXJlZCgpOworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnJldGFyZ2V0QWN0aXZl
QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKQoreworICAgIGlmICghaXNBY3RpdmUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmV0YXJn
ZXRpbmcuCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0
aWM6OmFuaW1hdGlvblRpbWVyRmlyZWQoKQpAQCAtMjMzLDcgKzI0NCw3IEBAIHZvaWQgU2Nyb2xs
QW5pbWF0aW9uS2luZXRpYzo6YW5pbWF0aW9uVGltZXJGaXJlZCgpCiAgICAgZG91YmxlIHggPSBt
X2hvcml6b250YWxEYXRhID8gbV9ob3Jpem9udGFsRGF0YS52YWx1ZSgpLnBvc2l0aW9uKCkgOiBt
X3Bvc2l0aW9uLngoKTsKICAgICBkb3VibGUgeSA9IG1fdmVydGljYWxEYXRhID8gbV92ZXJ0aWNh
bERhdGEudmFsdWUoKS5wb3NpdGlvbigpIDogbV9wb3NpdGlvbi55KCk7CiAgICAgbV9wb3NpdGlv
biA9IEZsb2F0UG9pbnQoeCwgeSk7Ci0gICAgbV9ub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlv
bihGbG9hdFBvaW50KG1fcG9zaXRpb24pKTsKKyAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25E
aWRVcGRhdGUoKnRoaXMsIEZsb2F0UG9pbnQobV9wb3NpdGlvbikpOwogfQogCiBTZWNvbmRzIFNj
cm9sbEFuaW1hdGlvbktpbmV0aWM6OmRlbHRhVG9OZXh0RnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCmluZGV4IGZjNGZhYjFlOWY0
MzFhMzhjYTdhYjFjNmU5OTYyZDhjYmMxYmM2YzUuLjYwNTMzZTM5NjIyMmI2Y2IxOWZlMGE0ZjVm
MTBkOGYwN2U1ZmIxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvbktpbmV0aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25LaW5ldGljLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDE2IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NywyNyAr
NTgsMjQgQEAgcHJpdmF0ZToKICAgICB9OwogCiBwdWJsaWM6Ci0gICAgdXNpbmcgU2Nyb2xsRXh0
ZW50c0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjxTY3JvbGxFeHRlbnRzKHZvaWQpPjsKLSAgICB1
c2luZyBOb3RpZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChG
bG9hdFBvaW50JiYpPjsKLQotICAgIFNjcm9sbEFuaW1hdGlvbktpbmV0aWMoU2Nyb2xsRXh0ZW50
c0NhbGxiYWNrJiYsIE5vdGlmeVBvc2l0aW9uQ2hhbmdlZENhbGxiYWNrJiYpOworICAgIFNjcm9s
bEFuaW1hdGlvbktpbmV0aWMoU2Nyb2xsQW5pbWF0aW9uQ2xpZW50Jik7CiAgICAgdmlydHVhbCB+
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpOwogCisgICAgYm9vbCBzdGFydEFuaW1hdGVkU2Nyb2xs
V2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsUG9zaXRpb24sIGNv
bnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9s
bCk7CisKKyAgICBib29sIHJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
IG5ld0Rlc3RpbmF0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICBib29s
IGlzQWN0aXZlKCkgY29uc3QgZmluYWw7CisKICAgICB2b2lkIGFwcGVuZFRvU2Nyb2xsSGlzdG9y
eShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKICAgICB2b2lkIGNsZWFyU2Nyb2xsSGlzdG9y
eSgpOwotICAgIEZsb2F0UG9pbnQgY29tcHV0ZVZlbG9jaXR5KCk7CiAKLSAgICB2b2lkIHN0YXJ0
KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgdmVs
b2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKTsKLSAgICB2b2lkIHN0b3Ao
KSBvdmVycmlkZTsKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRmxv
YXRQb2ludCBjb21wdXRlVmVsb2NpdHkoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGFuaW1hdGlv
blRpbWVyRmlyZWQoKTsKICAgICBTZWNvbmRzIGRlbHRhVG9OZXh0RnJhbWUoKTsKIAotICAgIFNj
cm9sbEV4dGVudHNDYWxsYmFjayBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbjsKLSAgICBOb3RpZnlQ
b3NpdGlvbkNoYW5nZWRDYWxsYmFjayBtX25vdGlmeVBvc2l0aW9uQ2hhbmdlZEZ1bmN0aW9uOwot
CiAgICAgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4gbV9ob3Jpem9udGFsRGF0YTsKICAgICBz
dGQ6Om9wdGlvbmFsPFBlckF4aXNEYXRhPiBtX3ZlcnRpY2FsRGF0YTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKaW5kZXggOTVmZThi
YmFhYjJmNTYyOWQwZWE2M2JlMzgzN2YzMTFmMWViY2FlYi4uYjQwMmM0OWY5Mzc2NGI5YmFiZDM1
NzAyOTExZDIwMmIwZjliY2I4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRpb25TbW9vdGguY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxNiBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoYykgMjAxMSwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQyLDI5ICs0Miw4
IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHRpY2tUaW1lID0gMV9zIC8gZnJhbWVSYXRlOwogc3Rh
dGljIGNvbnN0IFNlY29uZHMgbWluaW11bVRpbWVySW50ZXJ2YWwgeyAxX21zIH07CiBzdGF0aWMg
Y29uc3QgZG91YmxlIHNtb290aEZhY3RvckZvclByb2dyYW1tYXRpY1Njcm9sbCA9IDE7CiAKLVNj
cm9sbEFuaW1hdGlvblNtb290aDo6UGVyQXhpc0RhdGE6OlBlckF4aXNEYXRhKFNjcm9sbGJhck9y
aWVudGF0aW9uIG9yaWVudGF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgU2Nyb2xs
RXh0ZW50c0NhbGxiYWNrJiBleHRlbnRzQ2FsbGJhY2spCi17Ci0gICAgYXV0byBleHRlbnRzID0g
ZXh0ZW50c0NhbGxiYWNrKCk7Ci0gICAgc3dpdGNoIChvcmllbnRhdGlvbikgewotICAgIGNhc2Ug
SG9yaXpvbnRhbFNjcm9sbGJhcjoKLSAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb24u
eCgpOwotICAgICAgICB2aXNpYmxlTGVuZ3RoID0gZXh0ZW50cy52aXNpYmxlU2l6ZS53aWR0aCgp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFZlcnRpY2FsU2Nyb2xsYmFyOgotICAgICAgICBj
dXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbi55KCk7Ci0gICAgICAgIHZpc2libGVMZW5ndGggPSBl
eHRlbnRzLnZpc2libGVTaXplLmhlaWdodCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAg
ICBkZXNpcmVkUG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb247Ci19Ci0KLVNjcm9sbEFuaW1hdGlv
blNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbEV4dGVudHNDYWxsYmFjayYmIHNj
cm9sbEV4dGVudHNGdW5jdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIE5vdGlmeVBv
c2l0aW9uQ2hhbmdlZENhbGxiYWNrJiYgbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24sIE5v
dGlmeUFuaW1hdGlvblN0b3BwZWRDYWxsYmFjayYmIG5vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5j
dGlvbikKLSAgICA6IG1fc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKFdURk1vdmUoc2Nyb2xsRXh0ZW50
c0Z1bmN0aW9uKSkKLSAgICAsIG1fbm90aWZ5UG9zaXRpb25DaGFuZ2VkRnVuY3Rpb24oV1RGTW92
ZShub3RpZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbikpCi0gICAgLCBtX25vdGlmeUFuaW1hdGlv
blN0b3BwZWRGdW5jdGlvbihXVEZNb3ZlKG5vdGlmeUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbikp
Ci0gICAgLCBtX2hvcml6b250YWxEYXRhKEhvcml6b250YWxTY3JvbGxiYXIsIHBvc2l0aW9uLCBt
X3Njcm9sbEV4dGVudHNGdW5jdGlvbikKLSAgICAsIG1fdmVydGljYWxEYXRhKFZlcnRpY2FsU2Ny
b2xsYmFyLCBwb3NpdGlvbiwgbV9zY3JvbGxFeHRlbnRzRnVuY3Rpb24pCitTY3JvbGxBbmltYXRp
b25TbW9vdGg6OlNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxBbmltYXRpb25DbGllbnQmIGNs
aWVudCkKKyAgICA6IFNjcm9sbEFuaW1hdGlvbihjbGllbnQpCiAgICAgLCBtX2FuaW1hdGlvblRp
bWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5p
bWF0aW9uVGltZXJGaXJlZCkKIHsKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQpAQCAtNzIsMTEg
KzUxLDE1IEBAIFNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNj
cm9sbEV4dGVudHNDYWxsYmFjayYmIHNjcm9sbEV4dGVuCiAjZW5kaWYKIH0KIAotYm9vbCBTY3Jv
bGxBbmltYXRpb25TbW9vdGg6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlv
biwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRp
cGxpZXIpCitTY3JvbGxBbmltYXRpb25TbW9vdGg6On5TY3JvbGxBbmltYXRpb25TbW9vdGgoKSA9
IGRlZmF1bHQ7CisKK2Jvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdGFydEFuaW1hdGVkU2Ny
b2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBn
cmFudWxhcml0eSwgY29uc3QgRmxvYXRQb2ludCYgZnJvbVBvc2l0aW9uLCBmbG9hdCBzdGVwLCBm
bG9hdCBtdWx0aXBsaWVyKQogewogICAgIGZsb2F0IG1pblNjcm9sbFBvc2l0aW9uOwogICAgIGZs
b2F0IG1heFNjcm9sbFBvc2l0aW9uOwotICAgIGF1dG8gZXh0ZW50cyA9IG1fc2Nyb2xsRXh0ZW50
c0Z1bmN0aW9uKCk7CisgICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0Zv
ckFuaW1hdGlvbigqdGhpcyk7CisgICAgaW5pdGlhbGl6ZUF4ZXNEYXRhKGV4dGVudHMsIGZyb21Q
b3NpdGlvbik7CisKICAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikg
ewogICAgICAgICBtaW5TY3JvbGxQb3NpdGlvbiA9IGV4dGVudHMubWluaW11bVNjcm9sbFBvc2l0
aW9uLngoKTsKICAgICAgICAgbWF4U2Nyb2xsUG9zaXRpb24gPSBleHRlbnRzLm1heGltdW1TY3Jv
bGxQb3NpdGlvbi54KCk7CkBAIC05Myw0MSArNzYsNTUgQEAgYm9vbCBTY3JvbGxBbmltYXRpb25T
bW9vdGg6OnNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3Jh
bnUKICAgICByZXR1cm4gbmVlZFRvU2Nyb2xsOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdGlvblNt
b290aDo6c2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQorYm9vbCBTY3JvbGxBbmlt
YXRpb25TbW9vdGg6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmIGZyb21Qb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb25Qb3NpdGlv
bikKIHsKLSAgICBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSA9IFNjcm9sbEJ5UGFnZTsK
LSAgICBhdXRvIGV4dGVudHMgPSBtX3Njcm9sbEV4dGVudHNGdW5jdGlvbigpOwotICAgIGJvb2wg
bmVlZFRvU2Nyb2xsID0gdXBkYXRlUGVyQXhpc0RhdGEobV9ob3Jpem9udGFsRGF0YSwgZ3JhbnVs
YXJpdHksIHBvc2l0aW9uLngoKSwgZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRpb24ueCgpLCBl
eHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlvbi54KCksIHNtb290aEZhY3RvckZvclByb2dyYW1t
YXRpY1Njcm9sbCk7CisgICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0Zv
ckFuaW1hdGlvbigqdGhpcyk7CisgICAgaW5pdGlhbGl6ZUF4ZXNEYXRhKGV4dGVudHMsIGZyb21Q
b3NpdGlvbik7CisgICAgCisgICAgcmV0dXJuIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihleHRl
bnRzLCBkZXN0aW5hdGlvblBvc2l0aW9uKTsKK30KKworYm9vbCBTY3JvbGxBbmltYXRpb25TbW9v
dGg6OnJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld0Rlc3RpbmF0
aW9uKQoreworICAgIGlmICghaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbigqdGhp
cyk7CisgICAgcmV0dXJuIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihleHRlbnRzLCBuZXdEZXN0
aW5hdGlvbik7Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdGFydE9yUmV0YXJn
ZXRBbmltYXRpb24oY29uc3QgU2Nyb2xsRXh0ZW50cyYgZXh0ZW50cywgY29uc3QgRmxvYXRQb2lu
dCYgZGVzdGluYXRpb25Qb3NpdGlvbikKK3sKKyAgICBhdXRvIGdyYW51bGFyaXR5ID0gU2Nyb2xs
QnlQYWdlOworICAgIGJvb2wgbmVlZFRvU2Nyb2xsID0gdXBkYXRlUGVyQXhpc0RhdGEobV9ob3Jp
em9udGFsRGF0YSwgZ3JhbnVsYXJpdHksIGRlc3RpbmF0aW9uUG9zaXRpb24ueCgpLCBleHRlbnRz
Lm1pbmltdW1TY3JvbGxQb3NpdGlvbi54KCksIGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9u
LngoKSwgc21vb3RoRmFjdG9yRm9yUHJvZ3JhbW1hdGljU2Nyb2xsKTsKICAgICBuZWVkVG9TY3Jv
bGwgfD0KLSAgICAgICAgdXBkYXRlUGVyQXhpc0RhdGEobV92ZXJ0aWNhbERhdGEsIGdyYW51bGFy
aXR5LCBwb3NpdGlvbi55KCksIGV4dGVudHMubWluaW11bVNjcm9sbFBvc2l0aW9uLnkoKSwgZXh0
ZW50cy5tYXhpbXVtU2Nyb2xsUG9zaXRpb24ueSgpLCBzbW9vdGhGYWN0b3JGb3JQcm9ncmFtbWF0
aWNTY3JvbGwpOworICAgICAgICB1cGRhdGVQZXJBeGlzRGF0YShtX3ZlcnRpY2FsRGF0YSwgZ3Jh
bnVsYXJpdHksIGRlc3RpbmF0aW9uUG9zaXRpb24ueSgpLCBleHRlbnRzLm1pbmltdW1TY3JvbGxQ
b3NpdGlvbi55KCksIGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9uLnkoKSwgc21vb3RoRmFj
dG9yRm9yUHJvZ3JhbW1hdGljU2Nyb2xsKTsKICAgICBpZiAobmVlZFRvU2Nyb2xsICYmICFpc0Fj
dGl2ZSgpKSB7Ci0gICAgICAgIG1fc3RhcnRUaW1lID0gbV9ob3Jpem9udGFsRGF0YS5zdGFydFRp
bWU7CisgICAgICAgIG1fc3RhcnRUaW1lID0gbV92ZXJ0aWNhbERhdGEuc3RhcnRUaW1lOwogICAg
ICAgICBhbmltYXRpb25UaW1lckZpcmVkKCk7CiAgICAgfQotfTsKKyAgICByZXR1cm4gbmVlZFRv
U2Nyb2xsOworfQogCiB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RvcCgpCiB7CiAgICAg
bV9hbmltYXRpb25UaW1lci5zdG9wKCk7Ci0gICAgbV9ub3RpZnlBbmltYXRpb25TdG9wcGVkRnVu
Y3Rpb24oKTsKKyAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRFbmQoKnRoaXMpOwogfQog
Ci12b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6dXBkYXRlVmlzaWJsZUxlbmd0aHMoKQordm9p
ZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVwZGF0ZVNjcm9sbEV4dGVudHMoKQogewotICAgIGF1
dG8gZXh0ZW50cyA9IG1fc2Nyb2xsRXh0ZW50c0Z1bmN0aW9uKCk7CisgICAgYXV0byBleHRlbnRz
ID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbigqdGhpcyk7CiAgICAgbV9ob3Jp
em9udGFsRGF0YS52aXNpYmxlTGVuZ3RoID0gZXh0ZW50cy52aXNpYmxlU2l6ZS53aWR0aCgpOwog
ICAgIG1fdmVydGljYWxEYXRhLnZpc2libGVMZW5ndGggPSBleHRlbnRzLnZpc2libGVTaXplLmhl
aWdodCgpOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c2V0Q3VycmVudFBvc2l0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQordm9pZCBTY3JvbGxBbmltYXRpb25TbW9v
dGg6OmluaXRpYWxpemVBeGVzRGF0YShjb25zdCBTY3JvbGxFeHRlbnRzJiBleHRlbnRzLCBjb25z
dCBGbG9hdFBvaW50JiBzdGFydFBvc2l0aW9uKQogewotICAgIHN0b3AoKTsKLSAgICBtX2hvcml6
b250YWxEYXRhID0gUGVyQXhpc0RhdGEocG9zaXRpb24ueCgpLCBtX2hvcml6b250YWxEYXRhLnZp
c2libGVMZW5ndGgpOwotICAgIG1fdmVydGljYWxEYXRhID0gUGVyQXhpc0RhdGEocG9zaXRpb24u
eSgpLCBtX3ZlcnRpY2FsRGF0YS52aXNpYmxlTGVuZ3RoKTsKKyAgICBtX2hvcml6b250YWxEYXRh
ID0gUGVyQXhpc0RhdGEoc3RhcnRQb3NpdGlvbi54KCksIGV4dGVudHMudmlzaWJsZVNpemUud2lk
dGgoKSk7CisgICAgbV92ZXJ0aWNhbERhdGEgPSBQZXJBeGlzRGF0YShzdGFydFBvc2l0aW9uLnko
KSwgZXh0ZW50cy52aXNpYmxlU2l6ZS5oZWlnaHQoKSk7CiB9CiAKLVNjcm9sbEFuaW1hdGlvblNt
b290aDo6flNjcm9sbEFuaW1hdGlvblNtb290aCgpID0gZGVmYXVsdDsKLQogc3RhdGljIGlubGlu
ZSBkb3VibGUgY3VydmVBdChTY3JvbGxBbmltYXRpb25TbW9vdGg6OkN1cnZlIGN1cnZlLCBkb3Vi
bGUgdCkKIHsKICAgICBzd2l0Y2ggKGN1cnZlKSB7CkBAIC0yNDgsMzggKzI0NSwzOCBAQCBzdGF0
aWMgaW5saW5lIGRvdWJsZSByZWxlYXNlQXJlYShTY3JvbGxBbmltYXRpb25TbW9vdGg6OkN1cnZl
IGN1cnZlLCBkb3VibGUgc3RhcgogICAgIHJldHVybiBlbmRWYWx1ZSAtIHN0YXJ0VmFsdWU7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBnZXRBbmltYXRpb25QYXJhbWV0ZXJzRm9yR3JhbnVsYXJp
dHkoU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFNlY29uZHMmIGFuaW1hdGlvblRpbWUs
IFNlY29uZHMmIHJlcGVhdE1pbmltdW1TdXN0YWluVGltZSwgU2Vjb25kcyYgYXR0YWNrVGltZSwg
U2Vjb25kcyYgcmVsZWFzZVRpbWUsIFNjcm9sbEFuaW1hdGlvblNtb290aDo6Q3VydmUmIGNvYXN0
VGltZUN1cnZlLCBTZWNvbmRzJiBtYXhpbXVtQ29hc3RUaW1lKQorc3RhdGljIGlubGluZSB2b2lk
IGdldEFuaW1hdGlvblBhcmFtZXRlcnNGb3JHcmFudWxhcml0eShTY3JvbGxHcmFudWxhcml0eSBn
cmFudWxhcml0eSwgU2Vjb25kcyYgYW5pbWF0aW9uRHVyYXRpb24sIFNlY29uZHMmIHJlcGVhdE1p
bmltdW1TdXN0YWluVGltZSwgU2Vjb25kcyYgYXR0YWNrRHVyYXRpb24sIFNlY29uZHMmIHJlbGVh
c2VEdXJhdGlvbiwgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2ZSYgY29hc3RUaW1lQ3VydmUs
IFNlY29uZHMmIG1heGltdW1Db2FzdFRpbWUpCiB7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkg
ewogICAgIGNhc2UgU2Nyb2xsQnlEb2N1bWVudDoKLSAgICAgICAgYW5pbWF0aW9uVGltZSA9IHRp
Y2tUaW1lICogMTA7CisgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uID0gdGlja1RpbWUgKiAxMDsK
ICAgICAgICAgcmVwZWF0TWluaW11bVN1c3RhaW5UaW1lID0gdGlja1RpbWUgKiAxMDsKLSAgICAg
ICAgYXR0YWNrVGltZSA9IHRpY2tUaW1lICogMTA7Ci0gICAgICAgIHJlbGVhc2VUaW1lID0gdGlj
a1RpbWUgKiAxMDsKKyAgICAgICAgYXR0YWNrRHVyYXRpb24gPSB0aWNrVGltZSAqIDEwOworICAg
ICAgICByZWxlYXNlRHVyYXRpb24gPSB0aWNrVGltZSAqIDEwOwogICAgICAgICBjb2FzdFRpbWVD
dXJ2ZSA9IFNjcm9sbEFuaW1hdGlvblNtb290aDo6Q3VydmU6OkxpbmVhcjsKICAgICAgICAgbWF4
aW11bUNvYXN0VGltZSA9IDFfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTY3JvbGxCeUxp
bmU6Ci0gICAgICAgIGFuaW1hdGlvblRpbWUgPSB0aWNrVGltZSAqIDEwOworICAgICAgICBhbmlt
YXRpb25EdXJhdGlvbiA9IHRpY2tUaW1lICogMTA7CiAgICAgICAgIHJlcGVhdE1pbmltdW1TdXN0
YWluVGltZSA9IHRpY2tUaW1lICogNzsKLSAgICAgICAgYXR0YWNrVGltZSA9IHRpY2tUaW1lICog
MzsKLSAgICAgICAgcmVsZWFzZVRpbWUgPSB0aWNrVGltZSAqIDM7CisgICAgICAgIGF0dGFja0R1
cmF0aW9uID0gdGlja1RpbWUgKiAzOworICAgICAgICByZWxlYXNlRHVyYXRpb24gPSB0aWNrVGlt
ZSAqIDM7CiAgICAgICAgIGNvYXN0VGltZUN1cnZlID0gU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpD
dXJ2ZTo6TGluZWFyOwogICAgICAgICBtYXhpbXVtQ29hc3RUaW1lID0gMV9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFNjcm9sbEJ5UGFnZToKLSAgICAgICAgYW5pbWF0aW9uVGltZSA9IHRp
Y2tUaW1lICogMTU7CisgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uID0gdGlja1RpbWUgKiAxNTsK
ICAgICAgICAgcmVwZWF0TWluaW11bVN1c3RhaW5UaW1lID0gdGlja1RpbWUgKiAxMDsKLSAgICAg
ICAgYXR0YWNrVGltZSA9IHRpY2tUaW1lICogNTsKLSAgICAgICAgcmVsZWFzZVRpbWUgPSB0aWNr
VGltZSAqIDU7CisgICAgICAgIGF0dGFja0R1cmF0aW9uID0gdGlja1RpbWUgKiA1OworICAgICAg
ICByZWxlYXNlRHVyYXRpb24gPSB0aWNrVGltZSAqIDU7CiAgICAgICAgIGNvYXN0VGltZUN1cnZl
ID0gU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2ZTo6TGluZWFyOwogICAgICAgICBtYXhpbXVt
Q29hc3RUaW1lID0gMV9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNjcm9sbEJ5UGl4ZWw6
Ci0gICAgICAgIGFuaW1hdGlvblRpbWUgPSB0aWNrVGltZSAqIDExOworICAgICAgICBhbmltYXRp
b25EdXJhdGlvbiA9IHRpY2tUaW1lICogMTE7CiAgICAgICAgIHJlcGVhdE1pbmltdW1TdXN0YWlu
VGltZSA9IHRpY2tUaW1lICogMjsKLSAgICAgICAgYXR0YWNrVGltZSA9IHRpY2tUaW1lICogMzsK
LSAgICAgICAgcmVsZWFzZVRpbWUgPSB0aWNrVGltZSAqIDM7CisgICAgICAgIGF0dGFja0R1cmF0
aW9uID0gdGlja1RpbWUgKiAzOworICAgICAgICByZWxlYXNlRHVyYXRpb24gPSB0aWNrVGltZSAq
IDM7CiAgICAgICAgIGNvYXN0VGltZUN1cnZlID0gU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpDdXJ2
ZTo6UXVhZHJhdGljOwogICAgICAgICBtYXhpbXVtQ29hc3RUaW1lID0gMTI1MF9tczsKICAgICAg
ICAgYnJlYWs7CkBAIC0yOTksMjcgKzI5NiwyNyBAQCBib29sIFNjcm9sbEFuaW1hdGlvblNtb290
aDo6dXBkYXRlUGVyQXhpc0RhdGEoUGVyQXhpc0RhdGEmIGRhdGEsIFNjcm9sbEdyYW51bGFyaQog
ICAgIGlmIChuZXdQb3NpdGlvbiA9PSBkYXRhLmRlc2lyZWRQb3NpdGlvbikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgU2Vjb25kcyBhbmltYXRpb25UaW1lLCByZXBlYXRNaW5pbXVtU3Vz
dGFpblRpbWUsIGF0dGFja1RpbWUsIHJlbGVhc2VUaW1lLCBtYXhpbXVtQ29hc3RUaW1lOworICAg
IFNlY29uZHMgYW5pbWF0aW9uRHVyYXRpb24sIHJlcGVhdE1pbmltdW1TdXN0YWluVGltZSwgYXR0
YWNrRHVyYXRpb24sIHJlbGVhc2VEdXJhdGlvbiwgbWF4aW11bUNvYXN0VGltZTsKICAgICBDdXJ2
ZSBjb2FzdFRpbWVDdXJ2ZTsKLSAgICBnZXRBbmltYXRpb25QYXJhbWV0ZXJzRm9yR3JhbnVsYXJp
dHkoZ3JhbnVsYXJpdHksIGFuaW1hdGlvblRpbWUsIHJlcGVhdE1pbmltdW1TdXN0YWluVGltZSwg
YXR0YWNrVGltZSwgcmVsZWFzZVRpbWUsIGNvYXN0VGltZUN1cnZlLCBtYXhpbXVtQ29hc3RUaW1l
KTsKKyAgICBnZXRBbmltYXRpb25QYXJhbWV0ZXJzRm9yR3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHks
IGFuaW1hdGlvbkR1cmF0aW9uLCByZXBlYXRNaW5pbXVtU3VzdGFpblRpbWUsIGF0dGFja0R1cmF0
aW9uLCByZWxlYXNlRHVyYXRpb24sIGNvYXN0VGltZUN1cnZlLCBtYXhpbXVtQ29hc3RUaW1lKTsK
IAotICAgIGFuaW1hdGlvblRpbWUgKj0gc21vb3RoRmFjdG9yOworICAgIGFuaW1hdGlvbkR1cmF0
aW9uICo9IHNtb290aEZhY3RvcjsKICAgICByZXBlYXRNaW5pbXVtU3VzdGFpblRpbWUgKj0gc21v
b3RoRmFjdG9yOwotICAgIGF0dGFja1RpbWUgKj0gc21vb3RoRmFjdG9yOwotICAgIHJlbGVhc2VU
aW1lICo9IHNtb290aEZhY3RvcjsKKyAgICBhdHRhY2tEdXJhdGlvbiAqPSBzbW9vdGhGYWN0b3I7
CisgICAgcmVsZWFzZUR1cmF0aW9uICo9IHNtb290aEZhY3RvcjsKICAgICBtYXhpbXVtQ29hc3RU
aW1lICo9IHNtb290aEZhY3RvcjsKIAogICAgIGRhdGEuZGVzaXJlZFBvc2l0aW9uID0gbmV3UG9z
aXRpb247CiAgICAgaWYgKCFkYXRhLnN0YXJ0VGltZSkKLSAgICAgICAgZGF0YS5hdHRhY2tUaW1l
ID0gYXR0YWNrVGltZTsKLSAgICBkYXRhLmFuaW1hdGlvblRpbWUgPSBhbmltYXRpb25UaW1lOwot
ICAgIGRhdGEucmVsZWFzZVRpbWUgPSByZWxlYXNlVGltZTsKKyAgICAgICAgZGF0YS5hdHRhY2tE
dXJhdGlvbiA9IGF0dGFja0R1cmF0aW9uOworICAgIGRhdGEuYW5pbWF0aW9uRHVyYXRpb24gPSBh
bmltYXRpb25EdXJhdGlvbjsKKyAgICBkYXRhLnJlbGVhc2VEdXJhdGlvbiA9IHJlbGVhc2VEdXJh
dGlvbjsKIAogICAgIC8vIFByaW9yaXRpemUgb3VyIHdheSBvdXQgb2Ygb3ZlciBjb25zdHJhaW50
LgotICAgIGlmIChkYXRhLmF0dGFja1RpbWUgKyBkYXRhLnJlbGVhc2VUaW1lID4gZGF0YS5hbmlt
YXRpb25UaW1lKSB7Ci0gICAgICAgIGlmIChkYXRhLnJlbGVhc2VUaW1lID4gZGF0YS5hbmltYXRp
b25UaW1lKQotICAgICAgICAgICAgZGF0YS5yZWxlYXNlVGltZSA9IGRhdGEuYW5pbWF0aW9uVGlt
ZTsKLSAgICAgICAgZGF0YS5hdHRhY2tUaW1lID0gZGF0YS5hbmltYXRpb25UaW1lIC0gZGF0YS5y
ZWxlYXNlVGltZTsKKyAgICBpZiAoZGF0YS5hdHRhY2tEdXJhdGlvbiArIGRhdGEucmVsZWFzZUR1
cmF0aW9uID4gZGF0YS5hbmltYXRpb25EdXJhdGlvbikgeworICAgICAgICBpZiAoZGF0YS5yZWxl
YXNlRHVyYXRpb24gPiBkYXRhLmFuaW1hdGlvbkR1cmF0aW9uKQorICAgICAgICAgICAgZGF0YS5y
ZWxlYXNlRHVyYXRpb24gPSBkYXRhLmFuaW1hdGlvbkR1cmF0aW9uOworICAgICAgICBkYXRhLmF0
dGFja0R1cmF0aW9uID0gZGF0YS5hbmltYXRpb25EdXJhdGlvbiAtIGRhdGEucmVsZWFzZUR1cmF0
aW9uOwogICAgIH0KIAogICAgIGlmICghZGF0YS5zdGFydFRpbWUpIHsKQEAgLTMzMywxNSArMzMw
LDE1IEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjp1cGRhdGVQZXJBeGlzRGF0YShQZXJB
eGlzRGF0YSYgZGF0YSwgU2Nyb2xsR3JhbnVsYXJpCiAgICAgZG91YmxlIHJlbWFpbmluZ0RlbHRh
ID0gZGF0YS5kZXNpcmVkUG9zaXRpb24gLSBkYXRhLmN1cnJlbnRQb3NpdGlvbjsKICAgICBkb3Vi
bGUgYXR0YWNrQXJlYUxlZnQgPSAwOwogICAgIFNlY29uZHMgZGVsdGFUaW1lID0gZGF0YS5sYXN0
QW5pbWF0aW9uVGltZSAtIGRhdGEuc3RhcnRUaW1lOwotICAgIFNlY29uZHMgYXR0YWNrVGltZUxl
ZnQgPSBzdGQ6Om1heCgwX3MsIGRhdGEuYXR0YWNrVGltZSAtIGRlbHRhVGltZSk7Ci0gICAgU2Vj
b25kcyB0aW1lTGVmdCA9IGRhdGEuYW5pbWF0aW9uVGltZSAtIGRlbHRhVGltZTsKLSAgICBTZWNv
bmRzIG1pblRpbWVMZWZ0ID0gZGF0YS5yZWxlYXNlVGltZSArIHN0ZDo6bWluKHJlcGVhdE1pbmlt
dW1TdXN0YWluVGltZSwgZGF0YS5hbmltYXRpb25UaW1lIC0gZGF0YS5yZWxlYXNlVGltZSAtIGF0
dGFja1RpbWVMZWZ0KTsKKyAgICBTZWNvbmRzIGF0dGFja1RpbWVMZWZ0ID0gc3RkOjptYXgoMF9z
LCBkYXRhLmF0dGFja0R1cmF0aW9uIC0gZGVsdGFUaW1lKTsKKyAgICBTZWNvbmRzIHRpbWVMZWZ0
ID0gZGF0YS5hbmltYXRpb25EdXJhdGlvbiAtIGRlbHRhVGltZTsKKyAgICBTZWNvbmRzIG1pblRp
bWVMZWZ0ID0gZGF0YS5yZWxlYXNlRHVyYXRpb24gKyBzdGQ6Om1pbihyZXBlYXRNaW5pbXVtU3Vz
dGFpblRpbWUsIGRhdGEuYW5pbWF0aW9uRHVyYXRpb24gLSBkYXRhLnJlbGVhc2VEdXJhdGlvbiAt
IGF0dGFja1RpbWVMZWZ0KTsKICAgICBpZiAodGltZUxlZnQgPCBtaW5UaW1lTGVmdCkgewotICAg
ICAgICBkYXRhLmFuaW1hdGlvblRpbWUgPSBkZWx0YVRpbWUgKyBtaW5UaW1lTGVmdDsKKyAgICAg
ICAgZGF0YS5hbmltYXRpb25EdXJhdGlvbiA9IGRlbHRhVGltZSArIG1pblRpbWVMZWZ0OwogICAg
ICAgICB0aW1lTGVmdCA9IG1pblRpbWVMZWZ0OwogICAgIH0KIAotICAgIGlmIChtYXhpbXVtQ29h
c3RUaW1lID4gKHJlcGVhdE1pbmltdW1TdXN0YWluVGltZSArIHJlbGVhc2VUaW1lKSkgeworICAg
IGlmIChtYXhpbXVtQ29hc3RUaW1lID4gKHJlcGVhdE1pbmltdW1TdXN0YWluVGltZSArIHJlbGVh
c2VEdXJhdGlvbikpIHsKICAgICAgICAgZG91YmxlIHRhcmdldE1heENvYXN0VmVsb2NpdHkgPSBk
YXRhLnZpc2libGVMZW5ndGggKiAuMjUgKiBmcmFtZVJhdGU7CiAgICAgICAgIC8vIFRoaXMgbmVl
ZHMgdG8gYmUgYXMgbWluaW1hbCBhcyBwb3NzaWJsZSB3aGlsZSBub3QgYmVpbmcgaW50cnVzaXZl
IHRvIHBhZ2UgdXAvZG93bi4KICAgICAgICAgZG91YmxlIG1pbkNvYXN0RGVsdGEgPSBkYXRhLnZp
c2libGVMZW5ndGg7CkBAIC0zNTQsMzAgKzM1MSwzMCBAQCBib29sIFNjcm9sbEFuaW1hdGlvblNt
b290aDo6dXBkYXRlUGVyQXhpc0RhdGEoUGVyQXhpc0RhdGEmIGRhdGEsIFNjcm9sbEdyYW51bGFy
aQogICAgICAgICAgICAgU2Vjb25kcyBjb2FzdE1pblRpbWVMZWZ0ID0gc3RkOjptaW4obWF4aW11
bUNvYXN0VGltZSwgbWluVGltZUxlZnQgKyAobWF4aW11bUNvYXN0VGltZSAtIG1pblRpbWVMZWZ0
KSAqIGNvYXN0Q3VydmUoY29hc3RUaW1lQ3VydmUsIGNvYXN0RmFjdG9yKSk7CiAKICAgICAgICAg
ICAgIGlmIChTZWNvbmRzIGFkZGl0aW9uYWxUaW1lID0gc3RkOjptYXgoMF9zLCBjb2FzdE1pblRp
bWVMZWZ0IC0gbWluVGltZUxlZnQpKSB7Ci0gICAgICAgICAgICAgICAgU2Vjb25kcyBhZGRpdGlv
bmFsUmVsZWFzZVRpbWUgPSBzdGQ6Om1pbihhZGRpdGlvbmFsVGltZSwgYWRkaXRpb25hbFRpbWUg
KiAocmVsZWFzZVRpbWUgLyAocmVsZWFzZVRpbWUgKyByZXBlYXRNaW5pbXVtU3VzdGFpblRpbWUp
KSk7Ci0gICAgICAgICAgICAgICAgZGF0YS5yZWxlYXNlVGltZSA9IHJlbGVhc2VUaW1lICsgYWRk
aXRpb25hbFJlbGVhc2VUaW1lOwotICAgICAgICAgICAgICAgIGRhdGEuYW5pbWF0aW9uVGltZSA9
IGRlbHRhVGltZSArIGNvYXN0TWluVGltZUxlZnQ7CisgICAgICAgICAgICAgICAgU2Vjb25kcyBh
ZGRpdGlvbmFsUmVsZWFzZVRpbWUgPSBzdGQ6Om1pbihhZGRpdGlvbmFsVGltZSwgYWRkaXRpb25h
bFRpbWUgKiAocmVsZWFzZUR1cmF0aW9uIC8gKHJlbGVhc2VEdXJhdGlvbiArIHJlcGVhdE1pbmlt
dW1TdXN0YWluVGltZSkpKTsKKyAgICAgICAgICAgICAgICBkYXRhLnJlbGVhc2VEdXJhdGlvbiA9
IHJlbGVhc2VEdXJhdGlvbiArIGFkZGl0aW9uYWxSZWxlYXNlVGltZTsKKyAgICAgICAgICAgICAg
ICBkYXRhLmFuaW1hdGlvbkR1cmF0aW9uID0gZGVsdGFUaW1lICsgY29hc3RNaW5UaW1lTGVmdDsK
ICAgICAgICAgICAgICAgICB0aW1lTGVmdCA9IGNvYXN0TWluVGltZUxlZnQ7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBTZWNvbmRzIHJlbGVhc2VUaW1lTGVmdCA9IHN0
ZDo6bWluKHRpbWVMZWZ0LCBkYXRhLnJlbGVhc2VUaW1lKTsKKyAgICBTZWNvbmRzIHJlbGVhc2VU
aW1lTGVmdCA9IHN0ZDo6bWluKHRpbWVMZWZ0LCBkYXRhLnJlbGVhc2VEdXJhdGlvbik7CiAgICAg
U2Vjb25kcyBzdXN0YWluVGltZUxlZnQgPSBzdGQ6Om1heCgwX3MsIHRpbWVMZWZ0IC0gcmVsZWFz
ZVRpbWVMZWZ0IC0gYXR0YWNrVGltZUxlZnQpOwogICAgIGlmIChhdHRhY2tUaW1lTGVmdCkgewot
ICAgICAgICBkb3VibGUgYXR0YWNrU3BvdCA9IGRlbHRhVGltZSAvIGRhdGEuYXR0YWNrVGltZTsK
LSAgICAgICAgYXR0YWNrQXJlYUxlZnQgPSBhdHRhY2tBcmVhKEN1cnZlOjpDdWJpYywgYXR0YWNr
U3BvdCwgMSkgKiBkYXRhLmF0dGFja1RpbWUudmFsdWUoKTsKKyAgICAgICAgZG91YmxlIGF0dGFj
a1Nwb3QgPSBkZWx0YVRpbWUgLyBkYXRhLmF0dGFja0R1cmF0aW9uOworICAgICAgICBhdHRhY2tB
cmVhTGVmdCA9IGF0dGFja0FyZWEoQ3VydmU6OkN1YmljLCBhdHRhY2tTcG90LCAxKSAqIGRhdGEu
YXR0YWNrRHVyYXRpb24udmFsdWUoKTsKICAgICB9CiAKLSAgICBkb3VibGUgcmVsZWFzZVNwb3Qg
PSAoZGF0YS5yZWxlYXNlVGltZSAtIHJlbGVhc2VUaW1lTGVmdCkgLyBkYXRhLnJlbGVhc2VUaW1l
OwotICAgIGRvdWJsZSByZWxlYXNlQXJlYUxlZnQgPSByZWxlYXNlQXJlYShDdXJ2ZTo6Q3ViaWMs
IHJlbGVhc2VTcG90LCAxKSAqIGRhdGEucmVsZWFzZVRpbWUudmFsdWUoKTsKKyAgICBkb3VibGUg
cmVsZWFzZVNwb3QgPSAoZGF0YS5yZWxlYXNlRHVyYXRpb24gLSByZWxlYXNlVGltZUxlZnQpIC8g
ZGF0YS5yZWxlYXNlRHVyYXRpb247CisgICAgZG91YmxlIHJlbGVhc2VBcmVhTGVmdCA9IHJlbGVh
c2VBcmVhKEN1cnZlOjpDdWJpYywgcmVsZWFzZVNwb3QsIDEpICogZGF0YS5yZWxlYXNlRHVyYXRp
b24udmFsdWUoKTsKIAogICAgIGRhdGEuZGVzaXJlZFZlbG9jaXR5ID0gcmVtYWluaW5nRGVsdGEg
LyAoYXR0YWNrQXJlYUxlZnQgKyBzdXN0YWluVGltZUxlZnQudmFsdWUoKSArIHJlbGVhc2VBcmVh
TGVmdCk7CiAgICAgZGF0YS5yZWxlYXNlUG9zaXRpb24gPSBkYXRhLmRlc2lyZWRQb3NpdGlvbiAt
IGRhdGEuZGVzaXJlZFZlbG9jaXR5ICogcmVsZWFzZUFyZWFMZWZ0OwogICAgIGlmIChhdHRhY2tB
cmVhTGVmdCkKICAgICAgICAgZGF0YS5hdHRhY2tQb3NpdGlvbiA9IGRhdGEuc3RhcnRQb3NpdGlv
biArIGRhdGEuZGVzaXJlZFZlbG9jaXR5ICogYXR0YWNrQXJlYUxlZnQ7CiAgICAgZWxzZQotICAg
ICAgICBkYXRhLmF0dGFja1Bvc2l0aW9uID0gZGF0YS5yZWxlYXNlUG9zaXRpb24gLSAoZGF0YS5h
bmltYXRpb25UaW1lIC0gZGF0YS5yZWxlYXNlVGltZSAtIGRhdGEuYXR0YWNrVGltZSkudmFsdWUo
KSAqIGRhdGEuZGVzaXJlZFZlbG9jaXR5OworICAgICAgICBkYXRhLmF0dGFja1Bvc2l0aW9uID0g
ZGF0YS5yZWxlYXNlUG9zaXRpb24gLSAoZGF0YS5hbmltYXRpb25EdXJhdGlvbiAtIGRhdGEucmVs
ZWFzZUR1cmF0aW9uIC0gZGF0YS5hdHRhY2tEdXJhdGlvbikudmFsdWUoKSAqIGRhdGEuZGVzaXJl
ZFZlbG9jaXR5OwogCiAgICAgaWYgKHN1c3RhaW5UaW1lTGVmdCkgewogICAgICAgICBkb3VibGUg
cm91bmRPZmYgPSBkYXRhLnJlbGVhc2VQb3NpdGlvbiAtICgoYXR0YWNrQXJlYUxlZnQgPyBkYXRh
LmF0dGFja1Bvc2l0aW9uIDogZGF0YS5jdXJyZW50UG9zaXRpb24pICsgZGF0YS5kZXNpcmVkVmVs
b2NpdHkgKiBzdXN0YWluVGltZUxlZnQudmFsdWUoKSk7CkBAIC00MDEsMTggKzM5OCwxOCBAQCBi
b29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0ZVNjcm9sbChQZXJBeGlzRGF0YSYgZGF0
YSwgTW9ub3RvbmljVGltZSBjdXJyZQogICAgIFNlY29uZHMgZGVsdGFUaW1lID0gY3VycmVudFRp
bWUgLSBkYXRhLnN0YXJ0VGltZTsKICAgICBkb3VibGUgbmV3UG9zaXRpb24gPSBkYXRhLmN1cnJl
bnRQb3NpdGlvbjsKIAotICAgIGlmIChkZWx0YVRpbWUgPiBkYXRhLmFuaW1hdGlvblRpbWUpIHsK
KyAgICBpZiAoZGVsdGFUaW1lID4gZGF0YS5hbmltYXRpb25EdXJhdGlvbikgewogICAgICAgICBk
YXRhID0gUGVyQXhpc0RhdGEoZGF0YS5kZXNpcmVkUG9zaXRpb24sIGRhdGEudmlzaWJsZUxlbmd0
aCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKGRlbHRhVGltZSA8IGRh
dGEuYXR0YWNrVGltZSkKLSAgICAgICAgbmV3UG9zaXRpb24gPSBhdHRhY2tDdXJ2ZShDdXJ2ZTo6
Q3ViaWMsIGRlbHRhVGltZS52YWx1ZSgpLCBkYXRhLmF0dGFja1RpbWUudmFsdWUoKSwgZGF0YS5z
dGFydFBvc2l0aW9uLCBkYXRhLmF0dGFja1Bvc2l0aW9uKTsKLSAgICBlbHNlIGlmIChkZWx0YVRp
bWUgPCAoZGF0YS5hbmltYXRpb25UaW1lIC0gZGF0YS5yZWxlYXNlVGltZSkpCi0gICAgICAgIG5l
d1Bvc2l0aW9uID0gZGF0YS5hdHRhY2tQb3NpdGlvbiArIChkZWx0YVRpbWUgLSBkYXRhLmF0dGFj
a1RpbWUpLnZhbHVlKCkgKiBkYXRhLmRlc2lyZWRWZWxvY2l0eTsKKyAgICBpZiAoZGVsdGFUaW1l
IDwgZGF0YS5hdHRhY2tEdXJhdGlvbikKKyAgICAgICAgbmV3UG9zaXRpb24gPSBhdHRhY2tDdXJ2
ZShDdXJ2ZTo6Q3ViaWMsIGRlbHRhVGltZS52YWx1ZSgpLCBkYXRhLmF0dGFja0R1cmF0aW9uLnZh
bHVlKCksIGRhdGEuc3RhcnRQb3NpdGlvbiwgZGF0YS5hdHRhY2tQb3NpdGlvbik7CisgICAgZWxz
ZSBpZiAoZGVsdGFUaW1lIDwgKGRhdGEuYW5pbWF0aW9uRHVyYXRpb24gLSBkYXRhLnJlbGVhc2VE
dXJhdGlvbikpCisgICAgICAgIG5ld1Bvc2l0aW9uID0gZGF0YS5hdHRhY2tQb3NpdGlvbiArIChk
ZWx0YVRpbWUgLSBkYXRhLmF0dGFja0R1cmF0aW9uKS52YWx1ZSgpICogZGF0YS5kZXNpcmVkVmVs
b2NpdHk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIHJlbGVhc2UgaXMgYmFzZWQgb24gdGFyZ2V0
aW5nIHRoZSBleGFjdCBmaW5hbCBwb3NpdGlvbi4KLSAgICAgICAgU2Vjb25kcyByZWxlYXNlRGVs
dGFUID0gZGVsdGFUaW1lIC0gKGRhdGEuYW5pbWF0aW9uVGltZSAtIGRhdGEucmVsZWFzZVRpbWUp
OwotICAgICAgICBuZXdQb3NpdGlvbiA9IHJlbGVhc2VDdXJ2ZShDdXJ2ZTo6Q3ViaWMsIHJlbGVh
c2VEZWx0YVQudmFsdWUoKSwgZGF0YS5yZWxlYXNlVGltZS52YWx1ZSgpLCBkYXRhLnJlbGVhc2VQ
b3NpdGlvbiwgZGF0YS5kZXNpcmVkUG9zaXRpb24pOworICAgICAgICBTZWNvbmRzIHJlbGVhc2VE
ZWx0YVQgPSBkZWx0YVRpbWUgLSAoZGF0YS5hbmltYXRpb25EdXJhdGlvbiAtIGRhdGEucmVsZWFz
ZUR1cmF0aW9uKTsKKyAgICAgICAgbmV3UG9zaXRpb24gPSByZWxlYXNlQ3VydmUoQ3VydmU6OkN1
YmljLCByZWxlYXNlRGVsdGFULnZhbHVlKCksIGRhdGEucmVsZWFzZUR1cmF0aW9uLnZhbHVlKCks
IGRhdGEucmVsZWFzZVBvc2l0aW9uLCBkYXRhLmRlc2lyZWRQb3NpdGlvbik7CiAgICAgfQogCiAg
ICAgLy8gTm9ybWFsaXplIHZlbG9jaXR5IHRvIGEgcGVyIHNlY29uZCBhbW91bnQuIENvdWxkIGJl
IHVzZWQgdG8gY2hlY2sgZm9yIGphbmsuCkBAIC00MzcsMTAgKzQzNCwxMCBAQCB2b2lkIFNjcm9s
bEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJGaXJlZCgpCiAKICAgICBpZiAoY29udGlu
dWVBbmltYXRpb24pCiAgICAgICAgIHN0YXJ0TmV4dFRpbWVyKHN0ZDo6bWF4KG1pbmltdW1UaW1l
ckludGVydmFsLCBkZWx0YVRvTmV4dEZyYW1lKSk7Ci0gICAgZWxzZQotICAgICAgICBtX25vdGlm
eUFuaW1hdGlvblN0b3BwZWRGdW5jdGlvbigpOwogCi0gICAgbV9ub3RpZnlQb3NpdGlvbkNoYW5n
ZWRGdW5jdGlvbihGbG9hdFBvaW50KG1faG9yaXpvbnRhbERhdGEuY3VycmVudFBvc2l0aW9uLCBt
X3ZlcnRpY2FsRGF0YS5jdXJyZW50UG9zaXRpb24pKTsKKyAgICBtX2NsaWVudC5zY3JvbGxBbmlt
YXRpb25EaWRVcGRhdGUoKnRoaXMsIHsgbV9ob3Jpem9udGFsRGF0YS5jdXJyZW50UG9zaXRpb24s
IG1fdmVydGljYWxEYXRhLmN1cnJlbnRQb3NpdGlvbiB9KTsKKyAgICBpZiAoIWNvbnRpbnVlQW5p
bWF0aW9uKQorICAgICAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRFbmQoKnRoaXMpOwog
fQogCiB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnROZXh0VGltZXIoU2Vjb25kcyBk
ZWxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
blNtb290aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3Ro
LmgKaW5kZXggZmJmNTMyOWIxMDBjMGQ5ODhjNjgyMWQ1ZTk0NDIwZTFjNTRmOWNmYy4uMmU5YmJm
NzJmNTc2MDQzMDViNmNiMzllMzZjZDk2MDc1NmUwNzQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiwxNiArMzMsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RmxvYXRQb2ludDsKLWNsYXNzIFNjcm9sbGFibGVBcmVhOwogZW51bSBjbGFzcyBTY3JvbGxDbGFt
cGluZyA6IGJvb2w7CiAKIGNsYXNzIFNjcm9sbEFuaW1hdGlvblNtb290aCBmaW5hbDogcHVibGlj
IFNjcm9sbEFuaW1hdGlvbiB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgU2Nyb2xsRXh0ZW50c0NhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjxTY3JvbGxFeHRlbnRzKHZvaWQpPjsKLSAgICB1c2luZyBOb3Rp
ZnlQb3NpdGlvbkNoYW5nZWRDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChGbG9hdFBvaW50
JiYpPjsKLSAgICB1c2luZyBOb3RpZnlBbmltYXRpb25TdG9wcGVkQ2FsbGJhY2sgPSBXVEY6OkZ1
bmN0aW9uPHZvaWQodm9pZCk+OwotCi0gICAgU2Nyb2xsQW5pbWF0aW9uU21vb3RoKFNjcm9sbEV4
dGVudHNDYWxsYmFjayYmLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgTm90aWZ5UG9zaXRp
b25DaGFuZ2VkQ2FsbGJhY2smJiwgTm90aWZ5QW5pbWF0aW9uU3RvcHBlZENhbGxiYWNrJiYpOwor
ICAgIFNjcm9sbEFuaW1hdGlvblNtb290aChTY3JvbGxBbmltYXRpb25DbGllbnQmKTsKICAgICB2
aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKIAogICAgIGVudW0gY2xhc3MgQ3VydmUg
ewpAQCAtNTIsMTkgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICAgICAgQm91bmNlCiAgICAgfTsKIAot
cHJpdmF0ZToKLSAgICBib29sIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3Jh
bnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIpIG92ZXJyaWRlOwotICAgIHZv
aWQgc2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3AoKSBv
dmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZVZpc2libGVMZW5ndGhzKCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzZXRDdXJyZW50UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwotICAg
IGJvb2wgaXNBY3RpdmUoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHN0cnVjdCBQZXJBeGlzRGF0
YSB7Ci0gICAgICAgIFBlckF4aXNEYXRhKCkgPSBkZWxldGU7CisgICAgYm9vbCBzdGFydEFuaW1h
dGVkU2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgY29uc3Qg
RmxvYXRQb2ludCYgZnJvbVBvc2l0aW9uLCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKTsK
KyAgICBib29sIHN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIGZyb21Qb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb25Qb3NpdGlvbik7
CiAKLSAgICAgICAgUGVyQXhpc0RhdGEoU2Nyb2xsYmFyT3JpZW50YXRpb24sIGNvbnN0IEZsb2F0
UG9pbnQmIHBvc2l0aW9uLCBTY3JvbGxFeHRlbnRzQ2FsbGJhY2smKTsKKyAgICBib29sIHJldGFy
Z2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld0Rlc3RpbmF0aW9uKSBmaW5h
bDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMo
KSBmaW5hbDsKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7CiAKK3ByaXZhdGU6Cisg
ICAgc3RydWN0IFBlckF4aXNEYXRhIHsKKyAgICAgICAgUGVyQXhpc0RhdGEoKSA9IGRlZmF1bHQ7
CiAgICAgICAgIFBlckF4aXNEYXRhKGZsb2F0IHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQogICAgICAg
ICAgICAgOiBjdXJyZW50UG9zaXRpb24ocG9zaXRpb24pCiAgICAgICAgICAgICAsIGRlc2lyZWRQ
b3NpdGlvbihwb3NpdGlvbikKQEAgLTgyLDM1ICs3NiwzNiBAQCBwcml2YXRlOgogICAgICAgICBN
b25vdG9uaWNUaW1lIHN0YXJ0VGltZTsKICAgICAgICAgZG91YmxlIHN0YXJ0VmVsb2NpdHkgeyAw
IH07CiAKLSAgICAgICAgU2Vjb25kcyBhbmltYXRpb25UaW1lOworICAgICAgICBTZWNvbmRzIGFu
aW1hdGlvbkR1cmF0aW9uOwogICAgICAgICBNb25vdG9uaWNUaW1lIGxhc3RBbmltYXRpb25UaW1l
OwogCiAgICAgICAgIGRvdWJsZSBhdHRhY2tQb3NpdGlvbiB7IDAgfTsKLSAgICAgICAgU2Vjb25k
cyBhdHRhY2tUaW1lOworICAgICAgICBTZWNvbmRzIGF0dGFja0R1cmF0aW9uOwogICAgICAgICBD
dXJ2ZSBhdHRhY2tDdXJ2ZSB7IEN1cnZlOjpRdWFkcmF0aWMgfTsKIAogICAgICAgICBkb3VibGUg
cmVsZWFzZVBvc2l0aW9uIHsgMCB9OwotICAgICAgICBTZWNvbmRzIHJlbGVhc2VUaW1lOworICAg
ICAgICBTZWNvbmRzIHJlbGVhc2VEdXJhdGlvbjsKICAgICAgICAgQ3VydmUgcmVsZWFzZUN1cnZl
IHsgQ3VydmU6OlF1YWRyYXRpYyB9OwogCiAgICAgICAgIGludCB2aXNpYmxlTGVuZ3RoIHsgMCB9
OwogICAgIH07CiAKKyAgICBib29sIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihjb25zdCBTY3Jv
bGxFeHRlbnRzJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24pOworCiAgICAgYm9vbCB1
cGRhdGVQZXJBeGlzRGF0YShQZXJBeGlzRGF0YSYsIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBu
ZXdQb3NpdGlvbiwgZmxvYXQgbWluU2Nyb2xsUG9zaXRpb24sIGZsb2F0IG1heFNjcm9sbFBvc2l0
aW9uLCBkb3VibGUgc21vb3RoRmFjdG9yID0gMSk7CiAgICAgYm9vbCBhbmltYXRlU2Nyb2xsKFBl
ckF4aXNEYXRhJiwgTW9ub3RvbmljVGltZSBjdXJyZW50VGltZSk7CisgICAgCisgICAgdm9pZCBp
bml0aWFsaXplQXhlc0RhdGEoY29uc3QgU2Nyb2xsRXh0ZW50cyYsIGNvbnN0IEZsb2F0UG9pbnQm
IHN0YXJ0UG9zaXRpb24pOwogCiAgICAgdm9pZCByZXF1ZXN0QW5pbWF0aW9uVGltZXJGaXJlZCgp
OwogICAgIHZvaWQgc3RhcnROZXh0VGltZXIoU2Vjb25kcyBkZWxheSk7CiAgICAgdm9pZCBhbmlt
YXRpb25UaW1lckZpcmVkKCk7CiAKLSAgICBTY3JvbGxFeHRlbnRzQ2FsbGJhY2sgbV9zY3JvbGxF
eHRlbnRzRnVuY3Rpb247Ci0gICAgTm90aWZ5UG9zaXRpb25DaGFuZ2VkQ2FsbGJhY2sgbV9ub3Rp
ZnlQb3NpdGlvbkNoYW5nZWRGdW5jdGlvbjsKLSAgICBOb3RpZnlBbmltYXRpb25TdG9wcGVkQ2Fs
bGJhY2sgbV9ub3RpZnlBbmltYXRpb25TdG9wcGVkRnVuY3Rpb247Ci0KICAgICBQZXJBeGlzRGF0
YSBtX2hvcml6b250YWxEYXRhOwogICAgIFBlckF4aXNEYXRhIG1fdmVydGljYWxEYXRhOwogCiAg
ICAgTW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCBo
YXZlIHRpbWVyIGhlcmUsIGFuZCBpbnN0ZWFkIHVzZSBzZXJ2aWNlQW5pbWF0aW9uKCkuCiAgICAg
UnVuTG9vcDo6VGltZXI8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPiBtX2FuaW1hdGlvblRpbWVyOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IDFh
ZWM5NmRjYjM1YzkwN2Y2ZjBkNmJjYjI1YmIyM2FjYjYxMDZiZmQuLjhhNmI2Zjk3NzYxZWIxMTll
ZTU5Y2VmOWFjZjcxYTQwYzE1ZjMyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHAKQEAgLTU0LDIwICs1NCw3IEBAIFNjcm9sbEFuaW1hdG9yOjpTY3JvbGxB
bmltYXRvcihTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBtX3Njcm9sbGFi
bGVBcmVhKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9zY3JvbGxDb250cm9sbGVyKCp0aGlzKQog
ICAgICwgbV9zY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXIoKnRoaXMsICZTY3JvbGxBbmlt
YXRvcjo6c2Nyb2xsQ29udHJvbGxlckFuaW1hdGlvblRpbWVyRmlyZWQpCi0gICAgLCBtX3Njcm9s
bEFuaW1hdGlvbihtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oCi0gICAgICAgIFt0
aGlzXSgpIC0+IFNjcm9sbEV4dGVudHMgewotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JvbGxh
YmxlQXJlYS5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVt
U2Nyb2xsUG9zaXRpb24oKSwgbV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpIH07Ci0gICAg
ICAgIH0sCi0gICAgICAgIG1fY3VycmVudFBvc2l0aW9uLAotICAgICAgICBbdGhpc10oRmxvYXRQ
b2ludCYmIHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBGbG9hdFNpemUgZGVsdGEgPSBwb3NpdGlv
biAtIG1fY3VycmVudFBvc2l0aW9uOwotICAgICAgICAgICAgbV9jdXJyZW50UG9zaXRpb24gPSBX
VEZNb3ZlKHBvc2l0aW9uKTsKLSAgICAgICAgICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0
YSk7Ci0gICAgICAgICAgICB1cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JPZmZzZXQoKTsK
LSAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdIHsKLSAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFy
ZWEuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6Ok5vdEluQW5p
bWF0aW9uKTsKLSAgICAgICAgfSkpCisgICAgLCBtX3Njcm9sbEFuaW1hdGlvbihtYWtlVW5pcXVl
PFNjcm9sbEFuaW1hdGlvblNtb290aD4oKnRoaXMpKQogICAgICwgbV9rZXlib2FyZFNjcm9sbGlu
Z0FuaW1hdG9yKG1ha2VVbmlxdWU8S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcj4oKnRoaXMsIG1f
c2Nyb2xsQ29udHJvbGxlcikpCiB7CiB9CkBAIC05OSwxMSArODYsOCBAQCBib29sIFNjcm9sbEFu
aW1hdG9yOjpzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbEdy
YW51bGFyaXR5CiAgICAgfQogCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnNjcm9sbEFuaW1hdG9y
RW5hYmxlZCgpICYmICFiZWhhdmlvci5jb250YWlucyhTY3JvbGxCZWhhdmlvcjo6TmV2ZXJBbmlt
YXRlKSkgewotICAgICAgICBpZiAoIW1fc2Nyb2xsQW5pbWF0aW9uLT5pc0FjdGl2ZSgpKQotICAg
ICAgICAgICAgbV9zY3JvbGxBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihtX2N1cnJlbnRQ
b3NpdGlvbik7Ci0gICAgICAgIHJldHVybiBtX3Njcm9sbEFuaW1hdGlvbi0+c2Nyb2xsKG9yaWVu
dGF0aW9uLCBncmFudWxhcml0eSwgc3RlcCwgbXVsdGlwbGllcik7Ci0gICAgfQorICAgIGlmICht
X3Njcm9sbGFibGVBcmVhLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpICYmICFiZWhhdmlvci5jb250
YWlucyhTY3JvbGxCZWhhdmlvcjo6TmV2ZXJBbmltYXRlKSkKKyAgICAgICAgcmV0dXJuIG1fc2Ny
b2xsQW5pbWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsKG9yaWVudGF0aW9uLCBncmFudWxhcml0
eSwgbV9jdXJyZW50UG9zaXRpb24sIHN0ZXAsIG11bHRpcGxpZXIpOwogI2VuZGlmCiAKICAgICBy
ZXR1cm4gc2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY3VycmVudFBvc2l0aW9uKCkg
KyBkZWx0YSk7CkBAIC0xMjQsNyArMTA4LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
VG9Qb3NpdGlvbldpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24KICAg
ICBpZiAoYWRqdXN0ZWRQb3NpdGlvbiA9PSBjdXJyZW50UG9zaXRpb24gJiYgYWRqdXN0ZWRQb3Np
dGlvbiA9PSBzY3JvbGxhYmxlQXJlYSgpLnNjcm9sbFBvc2l0aW9uKCkgJiYgIXNjcm9sbGFibGVB
cmVhKCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBtX3Njcm9sbEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24p
OworICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5zdG9wKCk7CiAgICAgbV9jdXJyZW50UG9zaXRpb24g
PSBhZGp1c3RlZFBvc2l0aW9uOwogICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChhZGp1c3RlZFBv
c2l0aW9uIC0gY3VycmVudFBvc2l0aW9uKTsKICAgICB1cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5k
ZXhGb3JPZmZzZXQoKTsKQEAgLTE0Miw4ICsxMjYsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpz
Y3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdQb3NpdGlv
bgogICAgIGlmICghcG9zaXRpb25DaGFuZ2VkICYmICFzY3JvbGxhYmxlQXJlYSgpLnNjcm9sbE9y
aWdpbkNoYW5nZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9zY3JvbGxBbmlt
YXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihtX2N1cnJlbnRQb3NpdGlvbik7Ci0gICAgbV9zY3Jv
bGxBbmltYXRpb24tPnNjcm9sbChuZXdQb3NpdGlvbik7CisgICAgbV9zY3JvbGxBbmltYXRpb24t
PnN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKG1fY3VycmVudFBvc2l0aW9uLCBuZXdQ
b3NpdGlvbik7CiAgICAgc2Nyb2xsYWJsZUFyZWEoKS5zZXRTY3JvbGxCZWhhdmlvclN0YXR1cyhT
Y3JvbGxCZWhhdmlvclN0YXR1czo6SW5Ob25OYXRpdmVBbmltYXRpb24pOwogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtMTUyLDcgKzEzNSw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnJldGFyZ2V0
UnVubmluZ0FuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdQb3NpdGlvbikKIHsKICAgICBB
U1NFUlQoc2Nyb2xsYWJsZUFyZWEoKS5jdXJyZW50U2Nyb2xsQmVoYXZpb3JTdGF0dXMoKSA9PSBT
Y3JvbGxCZWhhdmlvclN0YXR1czo6SW5Ob25OYXRpdmVBbmltYXRpb24pOwogICAgIEFTU0VSVCht
X3Njcm9sbEFuaW1hdGlvbi0+aXNBY3RpdmUoKSk7Ci0gICAgbV9zY3JvbGxBbmltYXRpb24tPnNj
cm9sbChuZXdQb3NpdGlvbik7CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnJldGFyZ2V0QWN0aXZl
QW5pbWF0aW9uKG5ld1Bvc2l0aW9uKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxBbmltYXRvcjo6
b2Zmc2V0RnJvbVBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQpAQCAtMzc1LDIy
ICszNTgsMjIgQEAgdm9pZCBTY3JvbGxBbmltYXRvcjo6Y2FuY2VsQW5pbWF0aW9ucygpCiAKIHZv
aWQgU2Nyb2xsQW5pbWF0b3I6OmNvbnRlbnRzUmVzaXplZCgpIGNvbnN0CiB7Ci0gICAgbV9zY3Jv
bGxBbmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7CisgICAgbV9zY3JvbGxBbmltYXRp
b24tPnVwZGF0ZVNjcm9sbEV4dGVudHMoKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRvcjo6d2ls
bEVuZExpdmVSZXNpemUoKQogewotICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT51cGRhdGVWaXNpYmxl
TGVuZ3RocygpOworICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT51cGRhdGVTY3JvbGxFeHRlbnRzKCk7
CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmRpZEFkZFZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9s
bGJhciopCiB7Ci0gICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0ZVZpc2libGVMZW5ndGhzKCk7
CisgICAgbV9zY3JvbGxBbmltYXRpb24tPnVwZGF0ZVNjcm9sbEV4dGVudHMoKTsKIH0KIAogdm9p
ZCBTY3JvbGxBbmltYXRvcjo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqKQog
ewotICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT51cGRhdGVWaXNpYmxlTGVuZ3RocygpOworICAgIG1f
c2Nyb2xsQW5pbWF0aW9uLT51cGRhdGVTY3JvbGxFeHRlbnRzKCk7CiB9CiAKIEZsb2F0UG9pbnQg
U2Nyb2xsQW5pbWF0b3I6OmFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBwaW5nSWZOZWVkZWQoY29u
c3QgRmxvYXRQb2ludCYgb2Zmc2V0LCBTY3JvbGxTbmFwUG9pbnRTZWxlY3Rpb25NZXRob2QgbWV0
aG9kKQpAQCAtNDIyLDUgKzQwNSwyNyBAQCBmbG9hdCBTY3JvbGxBbmltYXRvcjo6YWRqdXN0U2Ny
b2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5lZWRlZChTY3JvbGxFdmVudEF4aXMgYXhpcwogICAgIHJl
dHVybiBtX3Njcm9sbENvbnRyb2xsZXIuYWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oYXhpcywgbmV3
T2Zmc2V0LCB2ZWxvY2l0eUluU2Nyb2xsQXhpcywgb3JpZ2luYWxPZmZzZXQpOwogfQogCit2b2lk
IFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9u
JiwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCit7CisgICAgRmxvYXRTaXplIGRlbHRhID0g
cG9zaXRpb24gLSBtX2N1cnJlbnRQb3NpdGlvbjsKKyAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IHBv
c2l0aW9uOworICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7CisgICAgdXBkYXRlQWN0
aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7Cit9CisKK3ZvaWQgU2Nyb2xsQW5pbWF0b3I6
OnNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKQoreworICAgIG1fc2Nyb2xs
YWJsZUFyZWEuc2V0U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6Ok5v
dEluQW5pbWF0aW9uKTsKK30KKworU2Nyb2xsRXh0ZW50cyBTY3JvbGxBbmltYXRvcjo6c2Nyb2xs
RXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKQoreworICAgIHJldHVybiB7Cisg
ICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCksCisgICAgICAg
IG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9uKCksCisgICAgICAgIG1fc2Ny
b2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKQorICAgIH07Cit9CisKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKaW5kZXggZWJi
NDc3MTExZTA3MDk1NGI4NWFkYzViOTU2NWI4YTIzMzc5MTk2My4uYTExZTkwZTExZDc1OTZmNDFl
NjI4ODI5Mjc1NTUxZDcyZGU1YmRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRvci5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9u
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJU
aW1lci5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgpAQCAtNDQsMTQgKzQ1
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBLZXli
b2FyZFNjcm9sbGluZ0FuaW1hdG9yOwogY2xhc3MgUGxhdGZvcm1Ub3VjaEV2ZW50OwotY2xhc3Mg
U2Nyb2xsQW5pbWF0aW9uOworY2xhc3MgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOwogY2xhc3MgU2Ny
b2xsYWJsZUFyZWE7CiBjbGFzcyBTY3JvbGxiYXI7CiBjbGFzcyBXaGVlbEV2ZW50VGVzdE1vbml0
b3I7CiAKIGNsYXNzIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI7CiAKLWNsYXNzIFNj
cm9sbEFuaW1hdG9yIDogcHJpdmF0ZSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudCB7
CitjbGFzcyBTY3JvbGxBbmltYXRvciA6IHByaXZhdGUgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXJDbGllbnQsIHB1YmxpYyBTY3JvbGxBbmltYXRpb25DbGllbnQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
QW5pbWF0b3I+IGNyZWF0ZShTY3JvbGxhYmxlQXJlYSYpOwpAQCAtMTMzLDYgKzEzNCwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgaG9yaXpvbnRhbFNjcm9sbGJhclN0YXRlRm9yVGVz
dGluZygpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFN0cmlu
ZyB2ZXJ0aWNhbFNjcm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7IH0KIAorICAgIC8vIFNjcm9sbEFuaW1hdGlvbkNsaWVudAorICAgIHZvaWQgc2Ny
b2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQm
IGN1cnJlbnRQb3NpdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxBbmltYXRpb25EaWRF
bmQoU2Nyb2xsQW5pbWF0aW9uJikgb3ZlcnJpZGU7CisgICAgU2Nyb2xsRXh0ZW50cyBzY3JvbGxF
eHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpIG92ZXJyaWRlOworCiAgICAgdm9p
ZCBzZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IoUmVmUHRyPFdoZWVsRXZlbnRUZXN0TW9uaXRvcj4m
JiB0ZXN0TW9uaXRvcikgeyBtX3doZWVsRXZlbnRUZXN0TW9uaXRvciA9IHRlc3RNb25pdG9yOyB9
CiAKICAgICBGbG9hdFBvaW50IGFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBwaW5nSWZOZWVkZWQo
Y29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0LCBTY3JvbGxTbmFwUG9pbnRTZWxlY3Rpb25NZXRob2Qp
OwpAQCAtMTc5LDcgKzE4NSw3IEBAIHByb3RlY3RlZDoKICAgICBUaW1lciBtX3Njcm9sbENvbnRy
b2xsZXJBbmltYXRpb25UaW1lcjsKICAgICBGbG9hdFBvaW50IG1fY3VycmVudFBvc2l0aW9uOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbj4gbV9zY3JvbGxBbmltYXRpb247
CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvblNtb290aD4gbV9zY3JvbGxBbmlt
YXRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I+IG1f
a2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAppbmRleCA4
OTA4NDJkYzY2M2Y2Mzk5NTcyZjg5MzE0NTg5Y2IyNzI3M2Q5YjgyLi43ODIzODM1YzQxNTg5N2U5
NzUwZmU0MmM3ZGVhYjg1MzYyYWM1M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCkBAIC00OCwxNiAr
NDgsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpj
cmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibAogCiBTY3JvbGxBbmltYXRvckdlbmVyaWM6
OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAg
ICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKKyAgICAsIG1fa2luZXRpY0FuaW1h
dGlvbihtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KCp0aGlzKSkKICAgICAsIG1f
b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjpvdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKLSAgICBtX2tpbmV0
aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KAotICAgICAg
ICBbdGhpc10oKSAtPiBTY3JvbGxFeHRlbnRzIHsKLSAgICAgICAgICAgIHJldHVybiB7IG1fc2Ny
b2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEubWF4
aW11bVNjcm9sbFBvc2l0aW9uKCksIG1fc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKSB9Owot
ICAgICAgICB9LAotICAgICAgICBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Ci0gICAg
ICAgICAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsK
LSAgICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uKFdURk1vdmUocG9zaXRpb24pKTsKLSAgICAgICAg
fSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6flNjcm9sbEFuaW1hdG9yR2VuZXJpYygp
ID0gZGVmYXVsdDsKQEAgLTc2LDEyICs2OSwxMiBAQCBib29sIFNjcm9sbEFuaW1hdG9yR2VuZXJp
Yzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogICAg
IG1fa2luZXRpY0FuaW1hdGlvbi0+YXBwZW5kVG9TY3JvbGxIaXN0b3J5KGV2ZW50KTsKIAogICAg
IGlmIChldmVudC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSkgewotICAgICAgICBtX2tpbmV0
aWNBbmltYXRpb24tPnN0YXJ0KG1fY3VycmVudFBvc2l0aW9uLCBtX2tpbmV0aWNBbmltYXRpb24t
PmNvbXB1dGVWZWxvY2l0eSgpLCBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXIo
KSwgbV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpKTsKKyAgICAgICAgbV9raW5l
dGljQW5pbWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShtX2N1
cnJlbnRQb3NpdGlvbiwgbV9raW5ldGljQW5pbWF0aW9uLT5jb21wdXRlVmVsb2NpdHkoKSwgbV9z
Y3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCksIG1fc2Nyb2xsYWJsZUFyZWEudmVy
dGljYWxTY3JvbGxiYXIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAo
ZXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpKSB7CiAgICAgICAgIG1fa2lu
ZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7Ci0gICAgICAgIG1fa2luZXRpY0Fu
aW1hdGlvbi0+c3RhcnQobV9jdXJyZW50UG9zaXRpb24sIGV2ZW50LnN3aXBlVmVsb2NpdHkoKSwg
bV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCksIG1fc2Nyb2xsYWJsZUFyZWEu
dmVydGljYWxTY3JvbGxiYXIoKSk7CisgICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RhcnRB
bmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkobV9jdXJyZW50UG9zaXRpb24sIGV2ZW50
LnN3aXBlVmVsb2NpdHkoKSwgbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyKCks
IG1fc2Nyb2xsYWJsZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICNlbmRpZgpAQCAtODksMTAgKzgyLDEwIEBAIGJvb2wgU2Nyb2xsQW5pbWF0
b3JHZW5lcmljOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZl
bnQpCiAgICAgcmV0dXJuIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGV2ZW50KTsK
IH0KIAotdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OnVwZGF0ZVBvc2l0aW9uKEZsb2F0UG9p
bnQmJiBwb3NpdGlvbikKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp1cGRhdGVQb3NpdGlv
bihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBGbG9hdFNpemUgZGVsdGEgPSBw
b3NpdGlvbiAtIG1fY3VycmVudFBvc2l0aW9uOwotICAgIG1fY3VycmVudFBvc2l0aW9uID0gV1RG
TW92ZShwb3NpdGlvbik7CisgICAgbV9jdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICBu
b3RpZnlQb3NpdGlvbkNoYW5nZWQoZGVsdGEpOwogICAgIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJ
bmRleEZvck9mZnNldCgpOwogfQpAQCAtMjg4LDUgKzI4MSwxOCBAQCB2b2lkIFNjcm9sbEFuaW1h
dG9yR2VuZXJpYzo6bG9ja092ZXJsYXlTY3JvbGxiYXJTdGF0ZVRvSGlkZGVuKGJvb2wgc2hvdWxk
TG9ja1N0YQogICAgIH0KIH0KIAorLy8gRklYTUU6IENhbiB3ZSBqdXN0IHVzZSB0aGUgYmFzZSBj
bGFzcyBpbXBsZW1lbnRhdGlvbj8KK3ZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpzY3JvbGxB
bmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IEZsb2F0
UG9pbnQmIHBvc2l0aW9uKQoreworICAgIGlmICgmYW5pbWF0aW9uID09IG1fa2luZXRpY0FuaW1h
dGlvbi5nZXQoKSkgeworICAgICAgICAvLyBGSVhNRTogQ2xhcmlmeSBob3cgYW5pbWF0aW9ucyBp
bnRlcmFjdC4gVGhlcmUgc2hvdWxkIG5ldmVyIGJlIG1vcmUgdGhhbiBvbmUgYWN0aXZlIGF0IGEg
dGltZS4KKyAgICAgICAgbV9zY3JvbGxBbmltYXRpb24tPnN0b3AoKTsKKyAgICAgICAgdXBkYXRl
UG9zaXRpb24ocG9zaXRpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShhbmltYXRpb24sIHBvc2l0aW9uKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaAppbmRleCBlMDQ2YzUz
MWJiODRjMmFjZmY1ZTg5NDY1NTZkZGMxMTI1Yzk4YWYzLi5mNDg4ZjJmNWExOTdiNzQ2MjU0YmQy
MDcwNWY4ZDg0ZDIyOTEwMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKQEAgLTYxLDcgKzYxLDEwIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBub3RpZnlDb250ZW50QXJlYVNjcm9sbGVkKGNvbnN0IEZsb2F0U2l6
ZSYgZGVsdGEpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9ja092ZXJsYXlTY3JvbGxiYXJTdGF0ZVRv
SGlkZGVuKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB1cGRhdGVQb3NpdGlvbihGbG9hdFBv
aW50JiYpOworICAgIC8vIFNjcm9sbEFuaW1hdGlvbkNsaWVudAorICAgIHZvaWQgc2Nyb2xsQW5p
bWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIGN1cnJl
bnRQb3NpdGlvbikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHVwZGF0ZVBvc2l0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmKTsKIAogICAgIHZvaWQgb3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyRmly
ZWQoKTsKICAgICB2b2lkIHNob3dPdmVybGF5U2Nyb2xsYmFycygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>