<?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>227132</bug_id>
          
          <creation_ts>2021-06-17 09:46:15 -0700</creation_ts>
          <short_desc>Adopt Span in Base64.h</short_desc>
          <delta_ts>2021-06-19 19:06:32 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1770690</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-17 09:46:15 -0700</bug_when>
    <thetext>Adopt Span in Base64.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770691</commentid>
    <comment_count>1</comment_count>
      <attachid>431684</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-17 09:46:40 -0700</bug_when>
    <thetext>Created attachment 431684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771111</commentid>
    <comment_count>2</comment_count>
      <attachid>431798</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-19 13:04:26 -0700</bug_when>
    <thetext>Created attachment 431798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771120</commentid>
    <comment_count>3</comment_count>
      <attachid>431802</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-19 13:50:07 -0700</bug_when>
    <thetext>Created attachment 431802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771136</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-19 19:05:17 -0700</bug_when>
    <thetext>Committed r279051 (238971@main): &lt;https://commits.webkit.org/238971@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431802.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771137</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-19 19:06:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/79529906&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431684</attachid>
            <date>2021-06-17 09:46:40 -0700</date>
            <delta_ts>2021-06-19 13:04:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227132-20210617094639.patch</filename>
            <type>text/plain</type>
            <size>32323</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzg5OTEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA2LTE3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBTcGFuIGluIEJhc2U2NC5oCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcxMzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAg
ICAgICAgKiB3dGYvdGV4dC9CYXNlNjQuY3BwOgorICAgICAgICAoV1RGOjpiYXNlNjRFbmNvZGVJ
bnRlcm5hbCk6CisgICAgICAgIChXVEY6OmJhc2U2NEVuY29kZSk6CisgICAgICAgIChXVEY6OmJh
c2U2NEVuY29kZVRvVmVjdG9yKToKKyAgICAgICAgKFdURjo6YmFzZTY0RW5jb2RlVG9TdHJpbmcp
OgorICAgICAgICAoV1RGOjpiYXNlNjREZWNvZGVJbnRlcm5hbCk6CisgICAgICAgIChXVEY6OmJh
c2U2NERlY29kZSk6CisgICAgICAgIChXVEY6OmJhc2U2NFVSTERlY29kZSk6IERlbGV0ZWQuCisg
ICAgICAgICogd3RmL3RleHQvQmFzZTY0Lmg6CisgICAgICAgIChXVEY6OmJhc2U2NERlY29kZSk6
CisgICAgICAgIChXVEY6OmJhc2U2NEVuY29kZVRvVmVjdG9yKToKKyAgICAgICAgKFdURjo6YmFz
ZTY0RW5jb2RlVG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpiYXNlNjRVUkxFbmNvZGVUb1ZlY3Rv
cik6CisgICAgICAgIChXVEY6OmJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKToKKyAgICAgICAgKFdU
Rjo6YmFzZTY0VVJMRGVjb2RlKToKKyAgICAgICAgKFdURjo6aXNCYXNlNjRPckJhc2U2NFVSTENo
YXJhY3Rlcik6CisgICAgICAgIChXVEY6OmJhc2U2NEVuY29kZWQpOgorICAgICAgICAoV1RGOjpi
YXNlNjRVUkxFbmNvZGVkKToKKyAgICAgICAgKFdURjo6U3RyaW5nVHlwZUFkYXB0ZXI8QmFzZTY0
U3BlY2lmaWNhdGlvbj46OndyaXRlVG8gY29uc3QpOgorICAgICAgICAqIHd0Zi90ZXh0L0NTdHJp
bmcuaDoKKwogMjAyMS0wNi0xNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFtKU0NdIERpc2FibGUgSklUQ2FnZSBvbiBtYWNPUyB1bnRpbCB3ZSBldmFsdWF0
ZSBwZXJmb3JtYW5jZSB0aHJvdWdobHkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCShyZXZpc2lvbiAyNzg4NzQpCisr
KyBTb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjEyLDcgKzYxMiw5
IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogCiBwdWJsaWM6CisgICAgLy8gRklYTUU6IFJlbW92ZSB1c2VzIG9mIFZhbHVlVHlwZSBhbmQg
c3RhbmRhcmRpemUgb24gdmFsdWVfdHlwZSwgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHN0ZDo6c3Bh
bi4KICAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOworICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwog
CiAgICAgdHlwZWRlZiBUKiBpdGVyYXRvcjsKICAgICB0eXBlZGVmIGNvbnN0IFQqIGNvbnN0X2l0
ZXJhdG9yOwpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcAkocmV2aXNpb24gMjc4ODc0KQorKysg
U291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MywxMCAr
OTMsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgYmFzZTY0VVJMRGVjTWFwW2RlY29kZQogICAgIDB4
MzEsIDB4MzIsIDB4MzMsIG5vbkFscGhhYmV0LCBub25BbHBoYWJldCwgbm9uQWxwaGFiZXQsIG5v
bkFscGhhYmV0LCBub25BbHBoYWJldAogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc3RhdGljIHZvaWQgYmFzZTY0RW5jb2RlSW50ZXJuYWwoY29uc3QgdWludDhfdCogaW5w
dXREYXRhQnVmZmVyLCB1bnNpZ25lZCBpbnB1dExlbmd0aCwgQ2hhcmFjdGVyVHlwZSogZGVzdGlu
YXRpb25EYXRhQnVmZmVyLCB1bnNpZ25lZCBkZXN0aW5hdGlvbkxlbmd0aCwgQmFzZTY0RW5jb2Rl
UG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHN0YXRpYyB2b2lkIGJhc2U2NEVuY29kZUludGVybmFsKFNwYW48Y29uc3Qg
dWludDhfdD4gaW5wdXREYXRhQnVmZmVyLCBTcGFuPENoYXJhY3RlclR5cGU+IGRlc3RpbmF0aW9u
RGF0YUJ1ZmZlciwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1h
cCkKIHsKLSAgICBBU1NFUlQoZGVzdGluYXRpb25MZW5ndGggPiAwKTsKLSAgICBBU1NFUlQoY2Fs
Y3VsYXRlQmFzZTY0RW5jb2RlZFNpemUoaW5wdXRMZW5ndGgsIHBvbGljeSkgPT0gZGVzdGluYXRp
b25MZW5ndGgpOworICAgIEFTU0VSVChkZXN0aW5hdGlvbkRhdGFCdWZmZXIuc2l6ZSgpID4gMCk7
CisgICAgQVNTRVJUKGNhbGN1bGF0ZUJhc2U2NEVuY29kZWRTaXplKGlucHV0RGF0YUJ1ZmZlci5z
aXplKCksIHBvbGljeSkgPT0gZGVzdGluYXRpb25EYXRhQnVmZmVyLnNpemUoKSk7CiAKICAgICBh
dXRvIGVuY29kZU1hcCA9IChtYXAgPT0gQmFzZTY0RW5jb2RlTWFwOjpVUkwpID8gYmFzZTY0VVJM
RW5jTWFwIDogYmFzZTY0RW5jTWFwOwogCkBAIC0xMDQsMTAgKzEwNCwxMCBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgCiAgICAgdW5zaWduZWQgZGlkeCA9IDA7CiAg
ICAgdW5zaWduZWQgY291bnQgPSAwOwogCi0gICAgYm9vbCBpbnNlcnRMRnMgPSAocG9saWN5ID09
IEJhc2U2NEVuY29kZVBvbGljeTo6SW5zZXJ0TEZzICYmIGRlc3RpbmF0aW9uTGVuZ3RoID4gbWF4
aW11bUJhc2U2NExpbmVMZW5ndGhXaGVuSW5zZXJ0aW5nTEZzKTsKKyAgICBib29sIGluc2VydExG
cyA9IChwb2xpY3kgPT0gQmFzZTY0RW5jb2RlUG9saWN5OjpJbnNlcnRMRnMgJiYgZGVzdGluYXRp
b25EYXRhQnVmZmVyLnNpemUoKSA+IG1heGltdW1CYXNlNjRMaW5lTGVuZ3RoV2hlbkluc2VydGlu
Z0xGcyk7CiAKLSAgICBpZiAoaW5wdXRMZW5ndGggPiAxKSB7Ci0gICAgICAgIHdoaWxlIChzaWR4
IDwgaW5wdXRMZW5ndGggLSAyKSB7CisgICAgaWYgKGlucHV0RGF0YUJ1ZmZlci5zaXplKCkgPiAx
KSB7CisgICAgICAgIHdoaWxlIChzaWR4IDwgaW5wdXREYXRhQnVmZmVyLnNpemUoKSAtIDIpIHsK
ICAgICAgICAgICAgIGlmIChpbnNlcnRMRnMpIHsKICAgICAgICAgICAgICAgICBpZiAoY291bnQg
JiYgIShjb3VudCAlIG1heGltdW1CYXNlNjRMaW5lTGVuZ3RoV2hlbkluc2VydGluZ0xGcykpCiAg
ICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uRGF0YUJ1ZmZlcltkaWR4KytdID0gJ1xuJzsK
QEAgLTEyMiw3MSArMTIyLDc2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChzaWR4IDwgaW5wdXRMZW5ndGgpIHsK
KyAgICBpZiAoc2lkeCA8IGlucHV0RGF0YUJ1ZmZlci5zaXplKCkpIHsKICAgICAgICAgaWYgKGlu
c2VydExGcyAmJiAoY291bnQgPiAwKSAmJiAhKGNvdW50ICUgbWF4aW11bUJhc2U2NExpbmVMZW5n
dGhXaGVuSW5zZXJ0aW5nTEZzKSkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uRGF0YUJ1ZmZlcltk
aWR4KytdID0gJ1xuJzsKIAogICAgICAgICBkZXN0aW5hdGlvbkRhdGFCdWZmZXJbZGlkeCsrXSA9
IGVuY29kZU1hcFsoaW5wdXREYXRhQnVmZmVyW3NpZHhdID4+IDIpICYgMDc3XTsKLSAgICAgICAg
aWYgKHNpZHggPCBpbnB1dExlbmd0aCAtIDEpIHsKKyAgICAgICAgaWYgKHNpZHggPCBpbnB1dERh
dGFCdWZmZXIuc2l6ZSgpIC0gMSkgewogICAgICAgICAgICAgZGVzdGluYXRpb25EYXRhQnVmZmVy
W2RpZHgrK10gPSBlbmNvZGVNYXBbKChpbnB1dERhdGFCdWZmZXJbc2lkeCArIDFdID4+IDQpICYg
MDE3KSB8ICgoaW5wdXREYXRhQnVmZmVyW3NpZHhdIDw8IDQpICYgMDc3KV07CiAgICAgICAgICAg
ICBkZXN0aW5hdGlvbkRhdGFCdWZmZXJbZGlkeCsrXSA9IGVuY29kZU1hcFsgKGlucHV0RGF0YUJ1
ZmZlcltzaWR4ICsgMV0gPDwgMikgJiAwNzddOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IGRlc3RpbmF0aW9uRGF0YUJ1ZmZlcltkaWR4KytdID0gZW5jb2RlTWFwWyAoaW5wdXREYXRhQnVm
ZmVyW3NpZHggICAgXSA8PCA0KSAmIDA3N107CiAgICAgfQogCi0gICAgQVNTRVJUKHBvbGljeSAh
PSBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCB8fCBkaWR4ID09IGRlc3RpbmF0aW9uTGVuZ3RoKTsK
KyAgICBBU1NFUlQocG9saWN5ICE9IEJhc2U2NEVuY29kZVBvbGljeTo6VVJMIHx8IGRpZHggPT0g
ZGVzdGluYXRpb25EYXRhQnVmZmVyLnNpemUoKSk7CiAKLSAgICB3aGlsZSAoZGlkeCA8IGRlc3Rp
bmF0aW9uTGVuZ3RoKQorICAgIHdoaWxlIChkaWR4IDwgZGVzdGluYXRpb25EYXRhQnVmZmVyLnNp
emUoKSkKICAgICAgICAgZGVzdGluYXRpb25EYXRhQnVmZmVyW2RpZHgrK10gPSAnPSc7CiB9CiAK
LXN0YXRpYyBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlSW50ZXJuYWwoY29uc3QgdWludDhf
dCogaW5wdXREYXRhQnVmZmVyLCB1bnNpZ25lZCBpbnB1dExlbmd0aCwgQmFzZTY0RW5jb2RlUG9s
aWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyB2b2lkIGJhc2U2NEVuY29kZUludGVybmFsKFNwYW48Y29uc3Qgc3Rk
OjpieXRlPiBpbnB1dCwgU3BhbjxDaGFyYWN0ZXJUeXBlPiBkZXN0aW5hdGlvbkRhdGFCdWZmZXIs
IEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCiB7Ci0gICAg
YXV0byBkZXN0aW5hdGlvbkxlbmd0aCA9IGNhbGN1bGF0ZUJhc2U2NEVuY29kZWRTaXplKGlucHV0
TGVuZ3RoLCBwb2xpY3kpOworICAgIGJhc2U2NEVuY29kZUludGVybmFsKFNwYW4geyByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5kYXRhKCkpLCBpbnB1dC5zaXplKCkgfSwg
ZGVzdGluYXRpb25EYXRhQnVmZmVyLCBwb2xpY3ksIG1hcCk7Cit9CisKK3N0YXRpYyBWZWN0b3I8
dWludDhfdD4gYmFzZTY0RW5jb2RlSW50ZXJuYWwoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0
LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQoreworICAg
IGF1dG8gZGVzdGluYXRpb25MZW5ndGggPSBjYWxjdWxhdGVCYXNlNjRFbmNvZGVkU2l6ZShpbnB1
dC5zaXplKCksIHBvbGljeSk7CiAgICAgaWYgKCFkZXN0aW5hdGlvbkxlbmd0aCkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBkZXN0aW5hdGlvblZlY3RvcihkZXN0
aW5hdGlvbkxlbmd0aCk7Ci0gICAgYmFzZTY0RW5jb2RlSW50ZXJuYWwoaW5wdXREYXRhQnVmZmVy
LCBpbnB1dExlbmd0aCwgZGVzdGluYXRpb25WZWN0b3IuZGF0YSgpLCBkZXN0aW5hdGlvbkxlbmd0
aCwgcG9saWN5LCBtYXApOworICAgIGJhc2U2NEVuY29kZUludGVybmFsKGlucHV0LCBTcGFuIHsg
ZGVzdGluYXRpb25WZWN0b3IgfSwgcG9saWN5LCBtYXApOwogICAgIHJldHVybiBkZXN0aW5hdGlv
blZlY3RvcjsKIH0KIAotdm9pZCBiYXNlNjRFbmNvZGUoY29uc3Qgdm9pZCogaW5wdXREYXRhQnVm
ZmVyLCB1bnNpZ25lZCBpbnB1dExlbmd0aCwgVUNoYXIqIGRlc3RpbmF0aW9uRGF0YUJ1ZmZlciwg
dW5zaWduZWQgZGVzdGluYXRpb25MZW5ndGgsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJh
c2U2NEVuY29kZU1hcCBtYXApCit2b2lkIGJhc2U2NEVuY29kZShTcGFuPGNvbnN0IHN0ZDo6Ynl0
ZT4gaW5wdXQsIFNwYW48VUNoYXI+IGRlc3RpbmF0aW9uLCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9s
aWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewotICAgIGlmICghZGVzdGluYXRpb25MZW5ndGgp
CisgICAgaWYgKCFkZXN0aW5hdGlvbi5zaXplKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBiYXNl
NjRFbmNvZGVJbnRlcm5hbChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXREYXRhQnVm
ZmVyKSwgaW5wdXRMZW5ndGgsIGRlc3RpbmF0aW9uRGF0YUJ1ZmZlciwgZGVzdGluYXRpb25MZW5n
dGgsIHBvbGljeSwgbWFwKTsKKyAgICBiYXNlNjRFbmNvZGVJbnRlcm5hbChpbnB1dCwgZGVzdGlu
YXRpb24sIHBvbGljeSwgbWFwKTsKIH0KIAotdm9pZCBiYXNlNjRFbmNvZGUoY29uc3Qgdm9pZCog
aW5wdXREYXRhQnVmZmVyLCB1bnNpZ25lZCBpbnB1dExlbmd0aCwgTENoYXIqIGRlc3RpbmF0aW9u
RGF0YUJ1ZmZlciwgdW5zaWduZWQgZGVzdGluYXRpb25MZW5ndGgsIEJhc2U2NEVuY29kZVBvbGlj
eSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCit2b2lkIGJhc2U2NEVuY29kZShTcGFuPGNv
bnN0IHN0ZDo6Ynl0ZT4gaW5wdXQsIFNwYW48TENoYXI+IGRlc3RpbmF0aW9uLCBCYXNlNjRFbmNv
ZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewotICAgIGlmICghZGVzdGlu
YXRpb25MZW5ndGgpCisgICAgaWYgKCFkZXN0aW5hdGlvbi5zaXplKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBiYXNlNjRFbmNvZGVJbnRlcm5hbChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
aW5wdXREYXRhQnVmZmVyKSwgaW5wdXRMZW5ndGgsIGRlc3RpbmF0aW9uRGF0YUJ1ZmZlciwgZGVz
dGluYXRpb25MZW5ndGgsIHBvbGljeSwgbWFwKTsKKyAgICBiYXNlNjRFbmNvZGVJbnRlcm5hbChp
bnB1dCwgZGVzdGluYXRpb24sIHBvbGljeSwgbWFwKTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGJh
c2U2NEVuY29kZVRvVmVjdG9yKGNvbnN0IHZvaWQqIGlucHV0RGF0YUJ1ZmZlciwgdW5zaWduZWQg
aW5wdXRMZW5ndGgsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBt
YXApCitWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoU3Bhbjxjb25zdCBzdGQ6
OmJ5dGU+IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAg
bWFwKQogewotICAgIHJldHVybiBiYXNlNjRFbmNvZGVJbnRlcm5hbChzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oaW5wdXREYXRhQnVmZmVyKSwgaW5wdXRMZW5ndGgsIHBvbGljeSwgbWFwKTsK
KyAgICByZXR1cm4gYmFzZTY0RW5jb2RlSW50ZXJuYWwoaW5wdXQsIHBvbGljeSwgbWFwKTsKIH0K
IAotU3RyaW5nIGJhc2U2NEVuY29kZVRvU3RyaW5nKGNvbnN0IHZvaWQqIGlucHV0RGF0YUJ1ZmZl
ciwgdW5zaWduZWQgaW5wdXRMZW5ndGgsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2
NEVuY29kZU1hcCBtYXApCitTdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCBz
dGQ6OmJ5dGU+IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVN
YXAgbWFwKQogewotICAgIHJldHVybiBtYWtlU3RyaW5nKGJhc2U2NEVuY29kZWQoaW5wdXREYXRh
QnVmZmVyLCBpbnB1dExlbmd0aCwgcG9saWN5LCBtYXApKTsKKyAgICByZXR1cm4gbWFrZVN0cmlu
ZyhiYXNlNjRFbmNvZGVkKGlucHV0LCBwb2xpY3ksIG1hcCkpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29k
ZUludGVybmFsKGNvbnN0IFQqIGlucHV0RGF0YUJ1ZmZlciwgdW5zaWduZWQgaW5wdXRMZW5ndGgs
IE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNlNjREZWNvZGVNYXAg
bWFwKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBiYXNlNjREZWNvZGVJbnRlcm5hbChTcGFuPGNvbnN0IFQ+IGlucHV0RGF0YUJ1ZmZl
ciwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1h
cCBtYXApCiB7Ci0gICAgaWYgKCFpbnB1dExlbmd0aCkKKyAgICBpZiAoIWlucHV0RGF0YUJ1ZmZl
ci5zaXplKCkpCiAgICAgICAgIHJldHVybiBWZWN0b3I8dWludDhfdD4geyB9OwogCiAgICAgYXV0
byBkZWNvZGVNYXAgPSAobWFwID09IEJhc2U2NERlY29kZU1hcDo6VVJMKSA/IGJhc2U2NFVSTERl
Y01hcCA6IGJhc2U2NERlY01hcDsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBkZXN0aW5hdGlvbihp
bnB1dExlbmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRlc3RpbmF0aW9uKGlucHV0RGF0YUJ1
ZmZlci5zaXplKCkpOwogCiAgICAgdW5zaWduZWQgZXF1YWxzU2lnbkNvdW50ID0gMDsKICAgICB1
bnNpZ25lZCBkZXN0aW5hdGlvbkxlbmd0aCA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpZHggPSAw
OyBpZHggPCBpbnB1dExlbmd0aDsgKytpZHgpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGlkeCA9IDA7
IGlkeCA8IGlucHV0RGF0YUJ1ZmZlci5zaXplKCk7ICsraWR4KSB7CiAgICAgICAgIHVuc2lnbmVk
IGNoID0gaW5wdXREYXRhQnVmZmVyW2lkeF07CiAgICAgICAgIGlmIChjaCA9PSAnPScpIHsKICAg
ICAgICAgICAgICsrZXF1YWxzU2lnbkNvdW50OwpAQCAtMjU0LDg0ICsyNTksMTkgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RhdGljIHN0ZDo6b3B0aW9uYQogICAgIHJldHVybiBkZXN0aW5hdGlv
bjsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25z
dCBTdHJpbmcmIGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywg
QmFzZTY0RGVjb2RlTWFwIG1hcCkKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dC5sZW5n
dGgoKTsKLSAgICBpZiAoIWxlbmd0aCB8fCBpbnB1dC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJu
IGJhc2U2NERlY29kZUludGVybmFsKGlucHV0LmNoYXJhY3RlcnM4KCksIGxlbmd0aCwgb3B0aW9u
cywgbWFwKTsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW5wdXQuY2hhcmFjdGVy
czE2KCksIGxlbmd0aCwgb3B0aW9ucywgbWFwKTsKLX0KLQotc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGJhc2U2NERlY29kZShTdHJpbmdWaWV3IGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0
RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKLXsKLSAgICB1bnNp
Z25lZCBsZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCB8fCBpbnB1dC5p
czhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGlucHV0LmNoYXJh
Y3RlcnM4KCksIGxlbmd0aCwgb3B0aW9ucywgbWFwKTsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2Rl
SW50ZXJuYWwoaW5wdXQuY2hhcmFjdGVyczE2KCksIGxlbmd0aCwgb3B0aW9ucywgbWFwKTsKLX0K
LQotc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBWZWN0
b3I8dWludDhfdD4mIGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9u
cywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKLXsKLSAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5kYXRhKCksIGlucHV0
LnNpemUoKSwgb3B0aW9ucywgbWFwKTsKLX0KLQotc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGJhc2U2NERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGlucHV0LCBPcHRpb25TZXQ8QmFz
ZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+
IGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVj
b2RlTWFwIG1hcCkKIHsKICAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJl
dHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihpbnB1dC5kYXRhKCkpLCBpbnB1dC5zaXplKCksIG9wdGlvbnMsIG1hcCk7Ci19Ci0KLXN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9u
cywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKLXsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJu
YWwoZGF0YSwgbGVuZ3RoLCBvcHRpb25zLCBtYXApOworICAgIHJldHVybiBiYXNlNjREZWNvZGVJ
bnRlcm5hbChTcGFuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXQuZGF0
YSgpKSwgaW5wdXQuc2l6ZSgpIH0sIG9wdGlvbnMsIG1hcCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVj
b2RlTWFwIG1hcCkKLXsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KGRhdGEpLCBsZW5ndGgsIG9wdGlvbnMsIG1hcCk7Ci19Ci0K
LXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgU3Ry
aW5nJiBpbnB1dCkKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKLSAg
ICBpZiAoIWxlbmd0aCB8fCBpbnB1dC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGJhc2U2NERl
Y29kZUludGVybmFsKGlucHV0LmNoYXJhY3RlcnM4KCksIGxlbmd0aCwgeyB9LCBCYXNlNjREZWNv
ZGVNYXA6OlVSTCk7Ci0gICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGlucHV0LmNoYXJh
Y3RlcnMxNigpLCBsZW5ndGgsIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOwotfQotCi1zdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5w
dXQpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKFN0cmluZ1Zp
ZXcgaW5wdXQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNlNjRE
ZWNvZGVNYXAgbWFwKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwog
ICAgIGlmICghbGVuZ3RoIHx8IGlucHV0LmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gYmFzZTY0
RGVjb2RlSW50ZXJuYWwoaW5wdXQuY2hhcmFjdGVyczgoKSwgbGVuZ3RoLCB7IH0sIEJhc2U2NERl
Y29kZU1hcDo6VVJMKTsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW5wdXQuY2hh
cmFjdGVyczE2KCksIGxlbmd0aCwgeyB9LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7Ci19Ci0KLXN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBpbnB1dCkKLXsKLSAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5kYXRhKCksIGlucHV0LnNpemUo
KSwgeyB9LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbnB1dCkKLXsK
LSAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBiYXNlNjREZWNv
ZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5kYXRhKCkp
LCBpbnB1dC5zaXplKCksIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOwotfQotCi1zdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwo
ZGF0YSwgbGVuZ3RoLCB7IH0sIEJhc2U2NERlY29kZU1hcDo6VVJMKTsKLX0KLQotc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgsIHsgfSwgQmFzZTY0RGVj
b2RlTWFwOjpVUkwpOworICAgICAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoU3BhbiB7
IGlucHV0LmNoYXJhY3RlcnM4KCksIGxlbmd0aCB9LCBvcHRpb25zLCBtYXApOworICAgIHJldHVy
biBiYXNlNjREZWNvZGVJbnRlcm5hbChTcGFuIHsgaW5wdXQuY2hhcmFjdGVyczE2KCksIGxlbmd0
aCB9LCBvcHRpb25zLCBtYXApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL3RleHQvQmFzZTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4
dC9CYXNlNjQuaAkocmV2aXNpb24gMjc4ODc0KQorKysgU291cmNlL1dURi93dGYvdGV4dC9CYXNl
NjQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1NwYW4u
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01MCwxMjYgKzUxLDE4MSBAQCBlbnVtIGNsYXNzIEJh
c2U2NERlY29kZU9wdGlvbnMgOiB1aW50OF90CiAKIGVudW0gY2xhc3MgQmFzZTY0RGVjb2RlTWFw
IHsgRGVmYXVsdCwgVVJMIH07CiAKK3N0cnVjdCBCYXNlNjRTcGVjaWZpY2F0aW9uIHsKKyAgICBT
cGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gaW5wdXQ7CisgICAgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGlj
eTsKKyAgICBCYXNlNjRFbmNvZGVNYXAgbWFwOworfTsKKwogc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBtYXhpbXVtQmFzZTY0TGluZUxlbmd0aFdoZW5JbnNlcnRpbmdMRnMgPSA3NjsKIAogLy8g
SWYgdGhlIGlucHV0IHN0cmluZyBpcyBwYXRob2xvZ2ljYWxseSBsYXJnZSwganVzdCByZXR1cm4g
bm90aGluZy4KIC8vIFJhdGhlciB0aGFuIGJlaW5nIHBlcmZlY3RseSBwcmVjaXNlLCB0aGlzIGlz
IGEgYml0IGNvbnNlcnZhdGl2ZS4KIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4aW11bUJh
c2U2NEVuY29kZXJJbnB1dEJ1ZmZlclNpemUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkgLyA3NyAqIDc2IC8gNCAqIDMgLSAyOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBiYXNlNjRFbmNvZGUoY29uc3Qgdm9pZCosIHVuc2lnbmVkLCBVQ2hhciosIHVuc2lnbmVkLCBC
YXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBC
YXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOwotV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IHZvaWQqLCB1bnNpZ25lZCwgTENoYXIqLCB1
bnNpZ25lZCwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdElu
c2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKK3Vu
c2lnbmVkIGNhbGN1bGF0ZUJhc2U2NEVuY29kZWRTaXplKHVuc2lnbmVkIGlucHV0TGVuZ3RoLCBC
YXNlNjRFbmNvZGVQb2xpY3kpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBi
b29sIGlzQmFzZTY0T3JCYXNlNjRVUkxDaGFyYWN0ZXIoQ2hhcmFjdGVyVHlwZSk7CisKK1dURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGJhc2U2NEVuY29kZShTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4sIFNw
YW48VUNoYXI+LCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90
SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYmFzZTY0RW5jb2RlKFNwYW48Y29uc3Qgc3RkOjpieXRl
PiwgU3BhbjxMQ2hhcj4sIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6
RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVs
dCk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9W
ZWN0b3IoY29uc3Qgdm9pZCosIHVuc2lnbmVkLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRF
bmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNv
ZGVNYXA6OkRlZmF1bHQpOwotVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVuY29kZVRvVmVjdG9yKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYsIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBv
bGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6
RGVmYXVsdCk7Ci1WZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoY29uc3QgVmVj
dG9yPGNoYXI+JiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05v
dEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsK
K1dURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3Io
U3Bhbjxjb25zdCBzdGQ6OmJ5dGU+LCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQ
b2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6
OkRlZmF1bHQpOworVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVuY29kZVRvVmVjdG9yKFNwYW48Y29u
c3QgdWludDhfdD4sIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9O
b3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7
CitWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoU3Bhbjxjb25zdCBjaGFyPiwg
QmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywg
QmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKIFZlY3Rvcjx1aW50
OF90PiBiYXNlNjRFbmNvZGVUb1ZlY3Rvcihjb25zdCBDU3RyaW5nJiwgQmFzZTY0RW5jb2RlUG9s
aWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFw
ID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIFN0cmlu
ZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhjb25zdCB2b2lkKiwgdW5zaWduZWQsIEJhc2U2NEVuY29k
ZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29k
ZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7Ci1TdHJpbmcgYmFzZTY0RW5jb2RlVG9T
dHJpbmcoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0
RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5j
b2RlTWFwOjpEZWZhdWx0KTsKLVN0cmluZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhjb25zdCBWZWN0
b3I8Y2hhcj4mLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90
SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOwor
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhTcGFuPGNvbnN0
IHN0ZDo6Ynl0ZT4sIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9O
b3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7
CitTdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCB1aW50OF90PiwgQmFzZTY0
RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0
RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKK1N0cmluZyBiYXNlNjRFbmNv
ZGVUb1N0cmluZyhTcGFuPGNvbnN0IGNoYXI+LCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRF
bmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNv
ZGVNYXA6OkRlZmF1bHQpOwogU3RyaW5nIGJhc2U2NEVuY29kZVRvU3RyaW5nKGNvbnN0IENTdHJp
bmcmLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0
TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOwogCi1XVEZf
RVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29k
ZShjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gPSB7IH0sIEJh
c2U2NERlY29kZU1hcCA9IEJhc2U2NERlY29kZU1hcDo6RGVmYXVsdCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShTcGFuPGNv
bnN0IHN0ZDo6Ynl0ZT4sIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFz
ZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKFN0cmluZ1Zp
ZXcsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFw
ID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKLVdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFw
ID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKLVdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYs
IE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0g
QmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKLVdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBCYXNlNjREZWNvZGVNYXAg
PSBCYXNlNjREZWNvZGVNYXA6OkRlZmF1bHQpOwotV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVk
LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gPSB7IH0sIEJhc2U2NERlY29kZU1hcCA9
IEJhc2U2NERlY29kZU1hcDo6RGVmYXVsdCk7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gYmFzZTY0RGVjb2RlKFNwYW48Y29uc3QgdWludDhfdD4sIE9wdGlvblNldDxCYXNlNjREZWNv
ZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZh
dWx0KTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3Bhbjxj
b25zdCBjaGFyPiwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBCYXNlNjRE
ZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVNYXA6OkRlZmF1bHQpOworc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8QmFzZTY0
RGVjb2RlT3B0aW9ucz4gPSB7IH0sIEJhc2U2NERlY29kZU1hcCA9IEJhc2U2NERlY29kZU1hcDo6
RGVmYXVsdCk7CisKKy8vIEFsbCB0aGUgc2FtZSBmdW5jdGlvbnMgbW9kaWZpZWQgZm9yIGJhc2U2
NHVybCwgYXMgZGVmaW5lZCBpbiBSRkMgNDY0OC4KKy8vIFRoaXMgZm9ybWF0IHVzZXMgJy0nIGFu
ZCAnXycgaW5zdGVhZCBvZiAnKycgYW5kICcvJyByZXNwZWN0aXZlbHkuCisKK1ZlY3Rvcjx1aW50
OF90PiBiYXNlNjRVUkxFbmNvZGVUb1ZlY3RvcihTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4pOworVmVj
dG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKFNwYW48Y29uc3QgdWludDhfdD4p
OworVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKFNwYW48Y29uc3QgY2hh
cj4pOworVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKGNvbnN0IENTdHJp
bmcmKTsKKworU3RyaW5nIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKFNwYW48Y29uc3Qgc3RkOjpi
eXRlPik7CitTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCB1aW50OF90
Pik7CitTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCBjaGFyPik7CitT
dHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoY29uc3QgQ1N0cmluZyYpOwogCi1pbmxpbmUg
VmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVuY29kZVRvVmVjdG9yKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXAp
CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFN0cmluZ1Zp
ZXcpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25z
dCBTdHJpbmcmKTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNv
ZGUoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+KTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBiYXNlNjRVUkxEZWNvZGUoU3Bhbjxjb25zdCB1aW50OF90Pik7CitzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFNwYW48Y29uc3QgY2hhcj4pOworCisvLyBW
ZXJzaW9ucyBmb3IgdXNlIHdpdGggU3RyaW5nQnVpbGRlciAvIG1ha2VTdHJpbmcuCisKK0Jhc2U2
NFNwZWNpZmljYXRpb24gYmFzZTY0RW5jb2RlZChTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4sIEJhc2U2
NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2
NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7CitCYXNlNjRTcGVjaWZpY2F0
aW9uIGJhc2U2NEVuY29kZWQoU3Bhbjxjb25zdCB1aW50OF90PiwgQmFzZTY0RW5jb2RlUG9saWN5
ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0g
QmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKK0Jhc2U2NFNwZWNpZmljYXRpb24gYmFzZTY0RW5j
b2RlZChjb25zdCBDU3RyaW5nJiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9s
aWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpE
ZWZhdWx0KTsKK0Jhc2U2NFNwZWNpZmljYXRpb24gYmFzZTY0VVJMRW5jb2RlZChTcGFuPGNvbnN0
IHN0ZDo6Ynl0ZT4pOworQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRVUkxFbmNvZGVkKFNwYW48
Y29uc3QgdWludDhfdD4pOworQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRVUkxFbmNvZGVkKGNv
bnN0IENTdHJpbmcmKTsKKworCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVuY29kZVRv
VmVjdG9yKFNwYW48Y29uc3QgdWludDhfdD4gaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xp
Y3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCiB7Ci0gICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvVmVj
dG9yKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgpLCBwb2xpY3ksIG1hcCk7CisgICAgcmV0dXJu
IGJhc2U2NEVuY29kZVRvVmVjdG9yKGFzQnl0ZXMoaW5wdXQpLCBwb2xpY3ksIG1hcCk7CiB9CiAK
LWlubGluZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoY29uc3QgVmVjdG9y
PGNoYXI+JiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFw
IG1hcCkKK2lubGluZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoU3Bhbjxj
b25zdCBjaGFyPiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2Rl
TWFwIG1hcCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoaW5wdXQuZGF0YSgp
LCBpbnB1dC5zaXplKCksIHBvbGljeSwgbWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9W
ZWN0b3IoYXNCeXRlcyhpbnB1dCksIHBvbGljeSwgbWFwKTsKIH0KIAogaW5saW5lIFZlY3Rvcjx1
aW50OF90PiBiYXNlNjRFbmNvZGVUb1ZlY3Rvcihjb25zdCBDU3RyaW5nJiBpbnB1dCwgQmFzZTY0
RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKIHsKLSAgICByZXR1cm4g
YmFzZTY0RW5jb2RlVG9WZWN0b3IoaW5wdXQuZGF0YSgpLCBpbnB1dC5sZW5ndGgoKSwgcG9saWN5
LCBtYXApOworICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1ZlY3RvcihpbnB1dC5ieXRlcygpLCBw
b2xpY3ksIG1hcCk7CiB9CiAKLWlubGluZSBTdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFz
ZTY0RW5jb2RlTWFwIG1hcCkKK2lubGluZSBTdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoU3Bh
bjxjb25zdCB1aW50OF90PiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0
RW5jb2RlTWFwIG1hcCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5wdXQu
ZGF0YSgpLCBpbnB1dC5zaXplKCksIHBvbGljeSwgbWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoYXNCeXRlcyhpbnB1dCksIHBvbGljeSwgbWFwKTsKIH0KIAotaW5saW5lIFN0
cmluZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhjb25zdCBWZWN0b3I8Y2hhcj4mIGlucHV0LCBCYXNl
NjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQoraW5saW5lIFN0cmlu
ZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhTcGFuPGNvbnN0IGNoYXI+IGlucHV0LCBCYXNlNjRFbmNv
ZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewotICAgIHJldHVybiBiYXNl
NjRFbmNvZGVUb1N0cmluZyhpbnB1dC5kYXRhKCksIGlucHV0LnNpemUoKSwgcG9saWN5LCBtYXAp
OworICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhhc0J5dGVzKGlucHV0KSwgcG9saWN5
LCBtYXApOwogfQogCiBpbmxpbmUgU3RyaW5nIGJhc2U2NEVuY29kZVRvU3RyaW5nKGNvbnN0IENT
dHJpbmcmIGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAg
bWFwKQogewotICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbnB1dC5kYXRhKCksIGlu
cHV0Lmxlbmd0aCgpLCBwb2xpY3ksIG1hcCk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvU3Ry
aW5nKGlucHV0LmJ5dGVzKCksIHBvbGljeSwgbWFwKTsKIH0KIAoraW5saW5lIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3Bhbjxjb25zdCB1aW50OF90PiBpbnB1
dCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1h
cCBtYXApCit7CisgICAgcmV0dXJuIGJhc2U2NERlY29kZShhc0J5dGVzKGlucHV0KSwgb3B0aW9u
cywgbWFwKTsKK30KIAotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vIEFsbCB0
aGUgc2FtZSBmdW5jdGlvbnMgbW9kaWZpZWQgZm9yIGJhc2U2NHVybCwgYXMgZGVmaW5lZCBpbiBS
RkMgNDY0OC4KLS8vIFRoaXMgZm9ybWF0IHVzZXMgJy0nIGFuZCAnXycgaW5zdGVhZCBvZiAnKycg
YW5kICcvJyByZXNwZWN0aXZlbHkuCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
Ci1WZWN0b3I8dWludDhfdD4gYmFzZTY0VVJMRW5jb2RlVG9WZWN0b3IoY29uc3Qgdm9pZCosIHVu
c2lnbmVkKTsKLVZlY3Rvcjx1aW50OF90PiBiYXNlNjRVUkxFbmNvZGVUb1ZlY3Rvcihjb25zdCBW
ZWN0b3I8dWludDhfdD4mKTsKLVZlY3Rvcjx1aW50OF90PiBiYXNlNjRVUkxFbmNvZGVUb1ZlY3Rv
cihjb25zdCBWZWN0b3I8Y2hhcj4mKTsKLVZlY3Rvcjx1aW50OF90PiBiYXNlNjRVUkxFbmNvZGVU
b1ZlY3Rvcihjb25zdCBDU3RyaW5nJik7Ci0KLVN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmlu
Zyhjb25zdCB2b2lkKiwgdW5zaWduZWQpOwotU3RyaW5nIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5n
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwotU3RyaW5nIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5n
KGNvbnN0IFZlY3RvcjxjaGFyPiYpOwotU3RyaW5nIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGNv
bnN0IENTdHJpbmcmKTsKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFz
ZTY0RGVjb2RlKFNwYW48Y29uc3QgY2hhcj4gaW5wdXQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVP
cHRpb25zPiBvcHRpb25zLCBCYXNlNjREZWNvZGVNYXAgbWFwKQoreworICAgIHJldHVybiBiYXNl
NjREZWNvZGUoYXNCeXRlcyhpbnB1dCksIG9wdGlvbnMsIG1hcCk7Cit9CiAKLVdURl9FWFBPUlRf
UFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNv
bnN0IFN0cmluZyYpOwotV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoU3RyaW5nVmlldyk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0
b3I8dWludDhfdD4mKTsKLVdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwotV1RGX0VYUE9S
VF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUo
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkKTsKLVdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IGNoYXIqLCB1bnNpZ25l
ZCk7CitpbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShj
b25zdCBTdHJpbmcmIGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9u
cywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKK3sKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlKFN0cmlu
Z1ZpZXcgeyBpbnB1dCB9LCBvcHRpb25zLCBtYXApOworfQogCi1pbmxpbmUgVmVjdG9yPHVpbnQ4
X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKGNvbnN0IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBs
ZW5ndGgpCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKFNw
YW48Y29uc3Qgc3RkOjpieXRlPiBpbnB1dCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9W
ZWN0b3IoaW5wdXQsIGxlbmd0aCwgQmFzZTY0RW5jb2RlUG9saWN5OjpVUkwsIEJhc2U2NEVuY29k
ZU1hcDo6VVJMKTsKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoaW5wdXQsIEJhc2U2
NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CiB9CiAKLWlubGluZSBW
ZWN0b3I8dWludDhfdD4gYmFzZTY0VVJMRW5jb2RlVG9WZWN0b3IoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBpbnB1dCkKK2lubGluZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0VVJMRW5jb2RlVG9WZWN0
b3IoU3Bhbjxjb25zdCB1aW50OF90PiBpbnB1dCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2Rl
VG9WZWN0b3IoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCksIEJhc2U2NEVuY29kZVBvbGljeTo6
VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvVmVj
dG9yKGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwp
OwogfQogCi1pbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKGNv
bnN0IFZlY3RvcjxjaGFyPiYgaW5wdXQpCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVS
TEVuY29kZVRvVmVjdG9yKFNwYW48Y29uc3QgY2hhcj4gaW5wdXQpCiB7Ci0gICAgcmV0dXJuIGJh
c2U2NEVuY29kZVRvVmVjdG9yKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgpLCBCYXNlNjRFbmNv
ZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOworICAgIHJldHVybiBiYXNlNjRF
bmNvZGVUb1ZlY3RvcihpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5OjpVUkwsIEJhc2U2NEVuY29k
ZU1hcDo6VVJMKTsKIH0KIAogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBiYXNlNjRVUkxFbmNvZGVU
b1ZlY3Rvcihjb25zdCBDU3RyaW5nJiBpbnB1dCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2Rl
VG9WZWN0b3IoaW5wdXQuZGF0YSgpLCBpbnB1dC5sZW5ndGgoKSwgQmFzZTY0RW5jb2RlUG9saWN5
OjpVUkwsIEJhc2U2NEVuY29kZU1hcDo6VVJMKTsKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9W
ZWN0b3IoaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVS
TCk7CiB9CiAKLWlubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoY29uc3Qgdm9p
ZCogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCkKK2lubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0KQogewotICAgIHJldHVybiBiYXNl
NjRFbmNvZGVUb1N0cmluZyhpbnB1dCwgbGVuZ3RoLCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwg
QmFzZTY0RW5jb2RlTWFwOjpVUkwpOworICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhp
bnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5OjpVUkwsIEJhc2U2NEVuY29kZU1hcDo6VVJMKTsKIH0K
IAotaW5saW5lIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGlucHV0KQoraW5saW5lIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhTcGFu
PGNvbnN0IHVpbnQ4X3Q+IGlucHV0KQogewotICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhpbnB1dC5kYXRhKCksIGlucHV0LnNpemUoKSwgQmFzZTY0RW5jb2RlUG9saWN5OjpVUkwsIEJh
c2U2NEVuY29kZU1hcDo6VVJMKTsKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5w
dXQsIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CiB9CiAK
LWlubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoY29uc3QgVmVjdG9yPGNoYXI+
JiBpbnB1dCkKK2lubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25z
dCBjaGFyPiBpbnB1dCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5wdXQu
ZGF0YSgpLCBpbnB1dC5zaXplKCksIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNv
ZGVNYXA6OlVSTCk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvU3RyaW5nKGlucHV0LCBCYXNl
NjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOwogfQogCiBpbmxpbmUg
U3RyaW5nIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGNvbnN0IENTdHJpbmcmIGlucHV0KQogewot
ICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbnB1dC5kYXRhKCksIGlucHV0Lmxlbmd0
aCgpLCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOworICAg
IHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5OjpV
UkwsIEJhc2U2NEVuY29kZU1hcDo6VVJMKTsKK30KKworaW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoU3RyaW5nVmlldyBpbnB1dCkKK3sKKyAgICBy
ZXR1cm4gYmFzZTY0RGVjb2RlKGlucHV0LCB7IH0sIEJhc2U2NERlY29kZU1hcDo6VVJMKTsKK30K
KworaW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUo
Y29uc3QgU3RyaW5nJiBpbnB1dCkKK3sKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlKGlucHV0LCB7
IH0sIEJhc2U2NERlY29kZU1hcDo6VVJMKTsKK30KKworaW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0
KQoreworICAgIHJldHVybiBiYXNlNjREZWNvZGUoaW5wdXQsIHsgfSwgQmFzZTY0RGVjb2RlTWFw
OjpVUkwpOworfQorCitpbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2
NFVSTERlY29kZShTcGFuPGNvbnN0IHVpbnQ4X3Q+IGlucHV0KQoreworICAgIHJldHVybiBiYXNl
NjREZWNvZGUoaW5wdXQsIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNCYXNlNjRPckJh
c2U2NFVSTENoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGMpCitpbmxpbmUgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShTcGFuPGNvbnN0IGNoYXI+IGlucHV0KQor
eworICAgIHJldHVybiBiYXNlNjREZWNvZGUoaW5wdXQsIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpV
UkwpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQmFzZTY0
T3JCYXNlNjRVUkxDaGFyYWN0ZXIoQ2hhcmFjdGVyVHlwZSBjKQogewogICAgIHJldHVybiBpc0FT
Q0lJQWxwaGFudW1lcmljKGMpIHx8IGMgPT0gJysnIHx8IGMgPT0gJy8nIHx8IGMgPT0gJy0nIHx8
IGMgPT0gJ18nOwogfQpAQCAtMjA3LDU4ICsyNjMsNDEgQEAgaW5saW5lIHVuc2lnbmVkIGNhbGN1
bGF0ZUJhc2U2NEVuY29kZWRTaQogICAgIHJldHVybiAwOwogfQogCi1zdHJ1Y3QgQmFzZTY0U3Bl
Y2lmaWNhdGlvbiB7Ci0gICAgY29uc3Qgdm9pZCogaW5wdXREYXRhOwotICAgIHVuc2lnbmVkIGlu
cHV0TGVuZ3RoOwotICAgIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3k7Ci0gICAgQmFzZTY0RW5j
b2RlTWFwIG1hcDsKLX07Ci0KLWlubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NEVuY29k
ZWQoY29uc3Qgdm9pZCogaW5wdXREYXRhLCB1bnNpZ25lZCBpbnB1dExlbmd0aCwgQmFzZTY0RW5j
b2RlUG9saWN5IHBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJh
c2U2NEVuY29kZU1hcCBtYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpCi17Ci0gICAgcmV0
dXJuIHsgaW5wdXREYXRhLCBpbnB1dExlbmd0aCwgcG9saWN5LCBtYXAgfTsKLX0KLQotaW5saW5l
IEJhc2U2NFNwZWNpZmljYXRpb24gYmFzZTY0RW5jb2RlZChjb25zdCBWZWN0b3I8dWludDhfdD4m
IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpE
b05vdEluc2VydExGcykKLXsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlZChpbnB1dC5kYXRhKCks
IGlucHV0LnNpemUoKSwgcG9saWN5KTsKLX0KLQotaW5saW5lIEJhc2U2NFNwZWNpZmljYXRpb24g
YmFzZTY0RW5jb2RlZChjb25zdCBWZWN0b3I8Y2hhcj4mIGlucHV0LCBCYXNlNjRFbmNvZGVQb2xp
Y3kgcG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcykKK2lubGluZSBC
YXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NEVuY29kZWQoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlu
cHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewot
ICAgIHJldHVybiBiYXNlNjRFbmNvZGVkKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgpLCBwb2xp
Y3kpOworICAgIHJldHVybiB7IGlucHV0LCBwb2xpY3ksIG1hcCB9OwogfQogCi1pbmxpbmUgQmFz
ZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRFbmNvZGVkKGNvbnN0IENTdHJpbmcmIGlucHV0LCBCYXNl
NjRFbmNvZGVQb2xpY3kgcG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExG
cykKK2lubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NEVuY29kZWQoU3Bhbjxjb25zdCB1
aW50OF90PiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFw
IG1hcCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlZChpbnB1dC5kYXRhKCksIGlucHV0Lmxl
bmd0aCgpLCBwb2xpY3kpOworICAgIHJldHVybiBiYXNlNjRFbmNvZGVkKGFzQnl0ZXMoaW5wdXQp
LCBwb2xpY3ksIG1hcCk7CiB9CiAKLWlubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NFVS
TEVuY29kZWQoY29uc3Qgdm9pZCogaW5wdXREYXRhLCB1bnNpZ25lZCBpbnB1dExlbmd0aCkKK2lu
bGluZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NEVuY29kZWQoY29uc3QgQ1N0cmluZyYgaW5w
dXQsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCiB7Ci0g
ICAgcmV0dXJuIGJhc2U2NEVuY29kZWQoaW5wdXREYXRhLCBpbnB1dExlbmd0aCwgQmFzZTY0RW5j
b2RlUG9saWN5OjpVUkwsIEJhc2U2NEVuY29kZU1hcDo6VVJMKTsKKyAgICByZXR1cm4gYmFzZTY0
RW5jb2RlZChpbnB1dC5ieXRlcygpLCBwb2xpY3ksIG1hcCk7CiB9CiAKLWlubGluZSBCYXNlNjRT
cGVjaWZpY2F0aW9uIGJhc2U2NFVSTEVuY29kZWQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1
dCkKK2lubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NFVSTEVuY29kZWQoU3Bhbjxjb25z
dCBzdGQ6OmJ5dGU+IGlucHV0KQogewotICAgIHJldHVybiBiYXNlNjRFbmNvZGVkKGlucHV0LmRh
dGEoKSwgaW5wdXQuc2l6ZSgpLCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5jb2Rl
TWFwOjpVUkwpOworICAgIHJldHVybiBiYXNlNjRFbmNvZGVkKGlucHV0LCBCYXNlNjRFbmNvZGVQ
b2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOwogfQogCi1pbmxpbmUgQmFzZTY0U3Bl
Y2lmaWNhdGlvbiBiYXNlNjRVUkxFbmNvZGVkKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW5wdXQpCitp
bmxpbmUgQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRVUkxFbmNvZGVkKFNwYW48Y29uc3QgdWlu
dDhfdD4gaW5wdXQpCiB7Ci0gICAgcmV0dXJuIGJhc2U2NEVuY29kZWQoaW5wdXQuZGF0YSgpLCBp
bnB1dC5zaXplKCksIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVS
TCk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZWQoaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeTo6
VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CiB9CiAKIGlubGluZSBCYXNlNjRTcGVjaWZpY2F0
aW9uIGJhc2U2NFVSTEVuY29kZWQoY29uc3QgQ1N0cmluZyYgaW5wdXQpCiB7Ci0gICAgcmV0dXJu
IGJhc2U2NEVuY29kZWQoaW5wdXQuZGF0YSgpLCBpbnB1dC5sZW5ndGgoKSwgQmFzZTY0RW5jb2Rl
UG9saWN5OjpVUkwsIEJhc2U2NEVuY29kZU1hcDo6VVJMKTsKKyAgICByZXR1cm4gYmFzZTY0RW5j
b2RlZChpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5OjpVUkwsIEJhc2U2NEVuY29kZU1hcDo6VVJM
KTsKIH0KIAogdGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxCYXNlNjRTcGVjaWZp
Y2F0aW9uPiB7CiBwdWJsaWM6CiAgICAgU3RyaW5nVHlwZUFkYXB0ZXIoY29uc3QgQmFzZTY0U3Bl
Y2lmaWNhdGlvbiYgYmFzZTY0KQogICAgICAgICA6IG1fYmFzZTY0IHsgYmFzZTY0IH0KLSAgICAg
ICAgLCBtX2VuY29kZWRMZW5ndGggeyBjYWxjdWxhdGVCYXNlNjRFbmNvZGVkU2l6ZShiYXNlNjQu
aW5wdXRMZW5ndGgsIGJhc2U2NC5wb2xpY3kpIH0KKyAgICAgICAgLCBtX2VuY29kZWRMZW5ndGgg
eyBjYWxjdWxhdGVCYXNlNjRFbmNvZGVkU2l6ZShiYXNlNjQuaW5wdXQuc2l6ZSgpLCBiYXNlNjQu
cG9saWN5KSB9CiAgICAgewogICAgIH0KIApAQCAtMjY3LDcgKzMwNiw3IEBAIHB1YmxpYzoKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhDaGFyYWN0
ZXJUeXBlKiBkZXN0aW5hdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIGJhc2U2NEVuY29kZSht
X2Jhc2U2NC5pbnB1dERhdGEsIG1fYmFzZTY0LmlucHV0TGVuZ3RoLCBkZXN0aW5hdGlvbiwgbV9l
bmNvZGVkTGVuZ3RoLCBtX2Jhc2U2NC5wb2xpY3ksIG1fYmFzZTY0Lm1hcCk7CisgICAgICAgIGJh
c2U2NEVuY29kZShtX2Jhc2U2NC5pbnB1dCwgU3BhbiB7IGRlc3RpbmF0aW9uLCBtX2VuY29kZWRM
ZW5ndGggfSwgbV9iYXNlNjQucG9saWN5LCBtX2Jhc2U2NC5tYXApOwogICAgIH0KIAogcHJpdmF0
ZToKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCShyZXZpc2lvbiAyNzg4NzQpCisrKyBTb3VyY2Uv
V1RGL3d0Zi90ZXh0L0NTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1NwYW4uaD4KIAogbmFtZXNwYWNl
IFdURiB7CiAKQEAgLTczLDYgKzc0LDIwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGFBc1VJbnQ4UHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSgpKTsgfQogCisgICAgU3Bhbjxjb25zdCB1aW50OF90PiBieXRlcygpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAobV9idWZmZXIpCisgICAgICAgICAgICByZXR1cm4geyBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2J1ZmZlci0+ZGF0YSgpKSwgbV9idWZm
ZXItPmxlbmd0aCgpIH07CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgU3Bhbjxj
b25zdCB1aW50OF90PiBieXRlc0lubHVkaW5nTnVsbFRlcm1pbmF0b3IoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIHsgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5sZW5ndGgo
KSArIDEgfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgY2hhciogbXV0YWJsZURhdGEoKTsKICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKICAg
ICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431798</attachid>
            <date>2021-06-19 13:04:26 -0700</date>
            <delta_ts>2021-06-19 13:50:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227132-20210619130425.patch</filename>
            <type>text/plain</type>
            <size>34719</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzkwNDkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA2LTE3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBTcGFuIGluIEJhc2U2NC5oCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcxMzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAg
ICAgICAgKiB3dGYvdGV4dC9CYXNlNjQuY3BwOgorICAgICAgICAoV1RGOjpiYXNlNjRFbmNvZGVJ
bnRlcm5hbCk6CisgICAgICAgIChXVEY6OmJhc2U2NEVuY29kZSk6CisgICAgICAgIChXVEY6OmJh
c2U2NEVuY29kZVRvVmVjdG9yKToKKyAgICAgICAgKFdURjo6YmFzZTY0RW5jb2RlVG9TdHJpbmcp
OgorICAgICAgICAoV1RGOjpiYXNlNjREZWNvZGVJbnRlcm5hbCk6CisgICAgICAgIChXVEY6OmJh
c2U2NERlY29kZSk6CisgICAgICAgIChXVEY6OmJhc2U2NFVSTERlY29kZSk6IERlbGV0ZWQuCisg
ICAgICAgICogd3RmL3RleHQvQmFzZTY0Lmg6CisgICAgICAgIChXVEY6OmJhc2U2NERlY29kZSk6
CisgICAgICAgIChXVEY6OmJhc2U2NEVuY29kZVRvVmVjdG9yKToKKyAgICAgICAgKFdURjo6YmFz
ZTY0RW5jb2RlVG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpiYXNlNjRVUkxFbmNvZGVUb1ZlY3Rv
cik6CisgICAgICAgIChXVEY6OmJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKToKKyAgICAgICAgKFdU
Rjo6YmFzZTY0VVJMRGVjb2RlKToKKyAgICAgICAgKFdURjo6aXNCYXNlNjRPckJhc2U2NFVSTENo
YXJhY3Rlcik6CisgICAgICAgIChXVEY6OmJhc2U2NEVuY29kZWQpOgorICAgICAgICAoV1RGOjpi
YXNlNjRVUkxFbmNvZGVkKToKKyAgICAgICAgKFdURjo6U3RyaW5nVHlwZUFkYXB0ZXI8QmFzZTY0
U3BlY2lmaWNhdGlvbj46OndyaXRlVG8gY29uc3QpOgorICAgICAgICAqIHd0Zi90ZXh0L0NTdHJp
bmcuaDoKKwogMjAyMS0wNi0xNyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4K
IAogICAgICAgICBbQ29jb2FdIERpc2FibGUgaGFyZHdhcmUgZGVjb2RpbmcgaW4gdGhlIFdlYlBy
b2Nlc3MKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1ZlY3Rvci5oCShyZXZpc2lvbiAyNzkwNDkpCisrKyBTb3VyY2UvV1RGL3d0Zi9W
ZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjEyLDcgKzYxMiw5IEBAIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiBwdWJsaWM6CisgICAg
Ly8gRklYTUU6IFJlbW92ZSB1c2VzIG9mIFZhbHVlVHlwZSBhbmQgc3RhbmRhcmRpemUgb24gdmFs
dWVfdHlwZSwgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHN0ZDo6c3Bhbi4KICAgICB0eXBlZGVmIFQg
VmFsdWVUeXBlOworICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwogCiAgICAgdHlwZWRlZiBUKiBp
dGVyYXRvcjsKICAgICB0eXBlZGVmIGNvbnN0IFQqIGNvbnN0X2l0ZXJhdG9yOwpJbmRleDogU291
cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L3RleHQvQmFzZTY0LmNwcAkocmV2aXNpb24gMjc5MDQ5KQorKysgU291cmNlL1dURi93dGYvdGV4
dC9CYXNlNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MywxMCArOTMsMTAgQEAgc3RhdGljIGNv
bnN0IGNoYXIgYmFzZTY0VVJMRGVjTWFwW2RlY29kZQogICAgIDB4MzEsIDB4MzIsIDB4MzMsIG5v
bkFscGhhYmV0LCBub25BbHBoYWJldCwgbm9uQWxwaGFiZXQsIG5vbkFscGhhYmV0LCBub25BbHBo
YWJldAogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHZvaWQg
YmFzZTY0RW5jb2RlSW50ZXJuYWwoY29uc3QgdWludDhfdCogaW5wdXREYXRhQnVmZmVyLCB1bnNp
Z25lZCBpbnB1dExlbmd0aCwgQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb25EYXRhQnVmZmVyLCB1
bnNpZ25lZCBkZXN0aW5hdGlvbkxlbmd0aCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFz
ZTY0RW5jb2RlTWFwIG1hcCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRp
YyB2b2lkIGJhc2U2NEVuY29kZUludGVybmFsKFNwYW48Y29uc3QgdWludDhfdD4gaW5wdXREYXRh
QnVmZmVyLCBTcGFuPENoYXJhY3RlclR5cGU+IGRlc3RpbmF0aW9uRGF0YUJ1ZmZlciwgQmFzZTY0
RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKIHsKLSAgICBBU1NFUlQo
ZGVzdGluYXRpb25MZW5ndGggPiAwKTsKLSAgICBBU1NFUlQoY2FsY3VsYXRlQmFzZTY0RW5jb2Rl
ZFNpemUoaW5wdXRMZW5ndGgsIHBvbGljeSkgPT0gZGVzdGluYXRpb25MZW5ndGgpOworICAgIEFT
U0VSVChkZXN0aW5hdGlvbkRhdGFCdWZmZXIuc2l6ZSgpID4gMCk7CisgICAgQVNTRVJUKGNhbGN1
bGF0ZUJhc2U2NEVuY29kZWRTaXplKGlucHV0RGF0YUJ1ZmZlci5zaXplKCksIHBvbGljeSkgPT0g
ZGVzdGluYXRpb25EYXRhQnVmZmVyLnNpemUoKSk7CiAKICAgICBhdXRvIGVuY29kZU1hcCA9ICht
YXAgPT0gQmFzZTY0RW5jb2RlTWFwOjpVUkwpID8gYmFzZTY0VVJMRW5jTWFwIDogYmFzZTY0RW5j
TWFwOwogCkBAIC0xMDQsMTAgKzEwNCwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBzdGF0aWMgCiAgICAgdW5zaWduZWQgZGlkeCA9IDA7CiAgICAgdW5zaWduZWQgY291bnQg
PSAwOwogCi0gICAgYm9vbCBpbnNlcnRMRnMgPSAocG9saWN5ID09IEJhc2U2NEVuY29kZVBvbGlj
eTo6SW5zZXJ0TEZzICYmIGRlc3RpbmF0aW9uTGVuZ3RoID4gbWF4aW11bUJhc2U2NExpbmVMZW5n
dGhXaGVuSW5zZXJ0aW5nTEZzKTsKKyAgICBib29sIGluc2VydExGcyA9IChwb2xpY3kgPT0gQmFz
ZTY0RW5jb2RlUG9saWN5OjpJbnNlcnRMRnMgJiYgZGVzdGluYXRpb25EYXRhQnVmZmVyLnNpemUo
KSA+IG1heGltdW1CYXNlNjRMaW5lTGVuZ3RoV2hlbkluc2VydGluZ0xGcyk7CiAKLSAgICBpZiAo
aW5wdXRMZW5ndGggPiAxKSB7Ci0gICAgICAgIHdoaWxlIChzaWR4IDwgaW5wdXRMZW5ndGggLSAy
KSB7CisgICAgaWYgKGlucHV0RGF0YUJ1ZmZlci5zaXplKCkgPiAxKSB7CisgICAgICAgIHdoaWxl
IChzaWR4IDwgaW5wdXREYXRhQnVmZmVyLnNpemUoKSAtIDIpIHsKICAgICAgICAgICAgIGlmIChp
bnNlcnRMRnMpIHsKICAgICAgICAgICAgICAgICBpZiAoY291bnQgJiYgIShjb3VudCAlIG1heGlt
dW1CYXNlNjRMaW5lTGVuZ3RoV2hlbkluc2VydGluZ0xGcykpCiAgICAgICAgICAgICAgICAgICAg
IGRlc3RpbmF0aW9uRGF0YUJ1ZmZlcltkaWR4KytdID0gJ1xuJzsKQEAgLTEyMiw3MSArMTIyLDc2
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyAKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmIChzaWR4IDwgaW5wdXRMZW5ndGgpIHsKKyAgICBpZiAoc2lkeCA8IGlu
cHV0RGF0YUJ1ZmZlci5zaXplKCkpIHsKICAgICAgICAgaWYgKGluc2VydExGcyAmJiAoY291bnQg
PiAwKSAmJiAhKGNvdW50ICUgbWF4aW11bUJhc2U2NExpbmVMZW5ndGhXaGVuSW5zZXJ0aW5nTEZz
KSkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uRGF0YUJ1ZmZlcltkaWR4KytdID0gJ1xuJzsKIAog
ICAgICAgICBkZXN0aW5hdGlvbkRhdGFCdWZmZXJbZGlkeCsrXSA9IGVuY29kZU1hcFsoaW5wdXRE
YXRhQnVmZmVyW3NpZHhdID4+IDIpICYgMDc3XTsKLSAgICAgICAgaWYgKHNpZHggPCBpbnB1dExl
bmd0aCAtIDEpIHsKKyAgICAgICAgaWYgKHNpZHggPCBpbnB1dERhdGFCdWZmZXIuc2l6ZSgpIC0g
MSkgewogICAgICAgICAgICAgZGVzdGluYXRpb25EYXRhQnVmZmVyW2RpZHgrK10gPSBlbmNvZGVN
YXBbKChpbnB1dERhdGFCdWZmZXJbc2lkeCArIDFdID4+IDQpICYgMDE3KSB8ICgoaW5wdXREYXRh
QnVmZmVyW3NpZHhdIDw8IDQpICYgMDc3KV07CiAgICAgICAgICAgICBkZXN0aW5hdGlvbkRhdGFC
dWZmZXJbZGlkeCsrXSA9IGVuY29kZU1hcFsgKGlucHV0RGF0YUJ1ZmZlcltzaWR4ICsgMV0gPDwg
MikgJiAwNzddOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGRlc3RpbmF0aW9uRGF0YUJ1
ZmZlcltkaWR4KytdID0gZW5jb2RlTWFwWyAoaW5wdXREYXRhQnVmZmVyW3NpZHggICAgXSA8PCA0
KSAmIDA3N107CiAgICAgfQogCi0gICAgQVNTRVJUKHBvbGljeSAhPSBCYXNlNjRFbmNvZGVQb2xp
Y3k6OlVSTCB8fCBkaWR4ID09IGRlc3RpbmF0aW9uTGVuZ3RoKTsKKyAgICBBU1NFUlQocG9saWN5
ICE9IEJhc2U2NEVuY29kZVBvbGljeTo6VVJMIHx8IGRpZHggPT0gZGVzdGluYXRpb25EYXRhQnVm
ZmVyLnNpemUoKSk7CiAKLSAgICB3aGlsZSAoZGlkeCA8IGRlc3RpbmF0aW9uTGVuZ3RoKQorICAg
IHdoaWxlIChkaWR4IDwgZGVzdGluYXRpb25EYXRhQnVmZmVyLnNpemUoKSkKICAgICAgICAgZGVz
dGluYXRpb25EYXRhQnVmZmVyW2RpZHgrK10gPSAnPSc7CiB9CiAKLXN0YXRpYyBWZWN0b3I8dWlu
dDhfdD4gYmFzZTY0RW5jb2RlSW50ZXJuYWwoY29uc3QgdWludDhfdCogaW5wdXREYXRhQnVmZmVy
LCB1bnNpZ25lZCBpbnB1dExlbmd0aCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0
RW5jb2RlTWFwIG1hcCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyB2
b2lkIGJhc2U2NEVuY29kZUludGVybmFsKFNwYW48Y29uc3Qgc3RkOjpieXRlPiBpbnB1dCwgU3Bh
bjxDaGFyYWN0ZXJUeXBlPiBkZXN0aW5hdGlvbkRhdGFCdWZmZXIsIEJhc2U2NEVuY29kZVBvbGlj
eSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCiB7Ci0gICAgYXV0byBkZXN0aW5hdGlvbkxl
bmd0aCA9IGNhbGN1bGF0ZUJhc2U2NEVuY29kZWRTaXplKGlucHV0TGVuZ3RoLCBwb2xpY3kpOwor
ICAgIGJhc2U2NEVuY29kZUludGVybmFsKFNwYW4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihpbnB1dC5kYXRhKCkpLCBpbnB1dC5zaXplKCkgfSwgZGVzdGluYXRpb25EYXRhQnVm
ZmVyLCBwb2xpY3ksIG1hcCk7Cit9CisKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5j
b2RlSW50ZXJuYWwoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xp
Y3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQoreworICAgIGF1dG8gZGVzdGluYXRpb25M
ZW5ndGggPSBjYWxjdWxhdGVCYXNlNjRFbmNvZGVkU2l6ZShpbnB1dC5zaXplKCksIHBvbGljeSk7
CiAgICAgaWYgKCFkZXN0aW5hdGlvbkxlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IFZlY3Rvcjx1aW50OF90PiBkZXN0aW5hdGlvblZlY3RvcihkZXN0aW5hdGlvbkxlbmd0aCk7Ci0g
ICAgYmFzZTY0RW5jb2RlSW50ZXJuYWwoaW5wdXREYXRhQnVmZmVyLCBpbnB1dExlbmd0aCwgZGVz
dGluYXRpb25WZWN0b3IuZGF0YSgpLCBkZXN0aW5hdGlvbkxlbmd0aCwgcG9saWN5LCBtYXApOwor
ICAgIGJhc2U2NEVuY29kZUludGVybmFsKGlucHV0LCBTcGFuIHsgZGVzdGluYXRpb25WZWN0b3Ig
fSwgcG9saWN5LCBtYXApOwogICAgIHJldHVybiBkZXN0aW5hdGlvblZlY3RvcjsKIH0KIAotdm9p
ZCBiYXNlNjRFbmNvZGUoY29uc3Qgdm9pZCogaW5wdXREYXRhQnVmZmVyLCB1bnNpZ25lZCBpbnB1
dExlbmd0aCwgVUNoYXIqIGRlc3RpbmF0aW9uRGF0YUJ1ZmZlciwgdW5zaWduZWQgZGVzdGluYXRp
b25MZW5ndGgsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXAp
Cit2b2lkIGJhc2U2NEVuY29kZShTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gaW5wdXQsIFNwYW48VUNo
YXI+IGRlc3RpbmF0aW9uLCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVN
YXAgbWFwKQogewotICAgIGlmICghZGVzdGluYXRpb25MZW5ndGgpCisgICAgaWYgKCFkZXN0aW5h
dGlvbi5zaXplKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBiYXNlNjRFbmNvZGVJbnRlcm5hbChz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXREYXRhQnVmZmVyKSwgaW5wdXRMZW5ndGgs
IGRlc3RpbmF0aW9uRGF0YUJ1ZmZlciwgZGVzdGluYXRpb25MZW5ndGgsIHBvbGljeSwgbWFwKTsK
KyAgICBiYXNlNjRFbmNvZGVJbnRlcm5hbChpbnB1dCwgZGVzdGluYXRpb24sIHBvbGljeSwgbWFw
KTsKIH0KIAotdm9pZCBiYXNlNjRFbmNvZGUoY29uc3Qgdm9pZCogaW5wdXREYXRhQnVmZmVyLCB1
bnNpZ25lZCBpbnB1dExlbmd0aCwgTENoYXIqIGRlc3RpbmF0aW9uRGF0YUJ1ZmZlciwgdW5zaWdu
ZWQgZGVzdGluYXRpb25MZW5ndGgsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVu
Y29kZU1hcCBtYXApCit2b2lkIGJhc2U2NEVuY29kZShTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gaW5w
dXQsIFNwYW48TENoYXI+IGRlc3RpbmF0aW9uLCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBC
YXNlNjRFbmNvZGVNYXAgbWFwKQogewotICAgIGlmICghZGVzdGluYXRpb25MZW5ndGgpCisgICAg
aWYgKCFkZXN0aW5hdGlvbi5zaXplKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBiYXNlNjRFbmNv
ZGVJbnRlcm5hbChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXREYXRhQnVmZmVyKSwg
aW5wdXRMZW5ndGgsIGRlc3RpbmF0aW9uRGF0YUJ1ZmZlciwgZGVzdGluYXRpb25MZW5ndGgsIHBv
bGljeSwgbWFwKTsKKyAgICBiYXNlNjRFbmNvZGVJbnRlcm5hbChpbnB1dCwgZGVzdGluYXRpb24s
IHBvbGljeSwgbWFwKTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVuY29kZVRvVmVjdG9y
KGNvbnN0IHZvaWQqIGlucHV0RGF0YUJ1ZmZlciwgdW5zaWduZWQgaW5wdXRMZW5ndGgsIEJhc2U2
NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCitWZWN0b3I8dWludDhf
dD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBCYXNl
NjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewotICAgIHJldHVy
biBiYXNlNjRFbmNvZGVJbnRlcm5hbChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXRE
YXRhQnVmZmVyKSwgaW5wdXRMZW5ndGgsIHBvbGljeSwgbWFwKTsKKyAgICByZXR1cm4gYmFzZTY0
RW5jb2RlSW50ZXJuYWwoaW5wdXQsIHBvbGljeSwgbWFwKTsKIH0KIAotU3RyaW5nIGJhc2U2NEVu
Y29kZVRvU3RyaW5nKGNvbnN0IHZvaWQqIGlucHV0RGF0YUJ1ZmZlciwgdW5zaWduZWQgaW5wdXRM
ZW5ndGgsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCitT
dHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBC
YXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewotICAgIHJl
dHVybiBtYWtlU3RyaW5nKGJhc2U2NEVuY29kZWQoaW5wdXREYXRhQnVmZmVyLCBpbnB1dExlbmd0
aCwgcG9saWN5LCBtYXApKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhiYXNlNjRFbmNvZGVkKGlu
cHV0LCBwb2xpY3ksIG1hcCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZUludGVybmFsKGNvbnN0IFQq
IGlucHV0RGF0YUJ1ZmZlciwgdW5zaWduZWQgaW5wdXRMZW5ndGgsIE9wdGlvblNldDxCYXNlNjRE
ZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNlNjREZWNvZGVNYXAgbWFwKQordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNv
ZGVJbnRlcm5hbChTcGFuPGNvbnN0IFQ+IGlucHV0RGF0YUJ1ZmZlciwgT3B0aW9uU2V0PEJhc2U2
NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCiB7Ci0gICAgaWYg
KCFpbnB1dExlbmd0aCkKKyAgICBpZiAoIWlucHV0RGF0YUJ1ZmZlci5zaXplKCkpCiAgICAgICAg
IHJldHVybiBWZWN0b3I8dWludDhfdD4geyB9OwogCiAgICAgYXV0byBkZWNvZGVNYXAgPSAobWFw
ID09IEJhc2U2NERlY29kZU1hcDo6VVJMKSA/IGJhc2U2NFVSTERlY01hcCA6IGJhc2U2NERlY01h
cDsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBkZXN0aW5hdGlvbihpbnB1dExlbmd0aCk7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRlc3RpbmF0aW9uKGlucHV0RGF0YUJ1ZmZlci5zaXplKCkpOwogCiAg
ICAgdW5zaWduZWQgZXF1YWxzU2lnbkNvdW50ID0gMDsKICAgICB1bnNpZ25lZCBkZXN0aW5hdGlv
bkxlbmd0aCA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpZHggPSAwOyBpZHggPCBpbnB1dExlbmd0
aDsgKytpZHgpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGlkeCA9IDA7IGlkeCA8IGlucHV0RGF0YUJ1
ZmZlci5zaXplKCk7ICsraWR4KSB7CiAgICAgICAgIHVuc2lnbmVkIGNoID0gaW5wdXREYXRhQnVm
ZmVyW2lkeF07CiAgICAgICAgIGlmIChjaCA9PSAnPScpIHsKICAgICAgICAgICAgICsrZXF1YWxz
U2lnbkNvdW50OwpAQCAtMjU0LDg0ICsyNTksMTkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Rh
dGljIHN0ZDo6b3B0aW9uYQogICAgIHJldHVybiBkZXN0aW5hdGlvbjsKIH0KIAotc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBTdHJpbmcmIGlucHV0LCBP
cHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1h
cCkKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKLSAgICBpZiAoIWxl
bmd0aCB8fCBpbnB1dC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVy
bmFsKGlucHV0LmNoYXJhY3RlcnM4KCksIGxlbmd0aCwgb3B0aW9ucywgbWFwKTsKLSAgICByZXR1
cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW5wdXQuY2hhcmFjdGVyczE2KCksIGxlbmd0aCwgb3B0
aW9ucywgbWFwKTsKLX0KLQotc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERl
Y29kZShTdHJpbmdWaWV3IGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0
aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1
dC5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCB8fCBpbnB1dC5pczhCaXQoKSkKLSAgICAgICAg
cmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGlucHV0LmNoYXJhY3RlcnM4KCksIGxlbmd0aCwg
b3B0aW9ucywgbWFwKTsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW5wdXQuY2hh
cmFjdGVyczE2KCksIGxlbmd0aCwgb3B0aW9ucywgbWFwKTsKLX0KLQotc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0
LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFw
IG1hcCkKLXsKLSAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBi
YXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5kYXRhKCksIGlucHV0LnNpemUoKSwgb3B0aW9ucywg
bWFwKTsKLX0KLQotc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShj
b25zdCBWZWN0b3I8Y2hhcj4mIGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4g
b3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBiYXNlNjREZWNvZGUoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBPcHRpb25TZXQ8
QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKIHsKICAg
ICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBiYXNlNjREZWNvZGVJ
bnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5kYXRhKCkpLCBp
bnB1dC5zaXplKCksIG9wdGlvbnMsIG1hcCk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFw
IG1hcCkKLXsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoZGF0YSwgbGVuZ3RoLCBv
cHRpb25zLCBtYXApOworICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChTcGFuIHsgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQuc2l6ZSgp
IH0sIG9wdGlvbnMsIG1hcCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBi
YXNlNjREZWNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBPcHRpb25TZXQ8
QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKLXsKLSAg
ICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KGRhdGEpLCBsZW5ndGgsIG9wdGlvbnMsIG1hcCk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgU3RyaW5nJiBpbnB1dCkKLXsKLSAg
ICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCB8fCBp
bnB1dC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGlucHV0
LmNoYXJhY3RlcnM4KCksIGxlbmd0aCwgeyB9LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7Ci0gICAg
cmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGlucHV0LmNoYXJhY3RlcnMxNigpLCBsZW5ndGgs
IHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOwotfQotCi1zdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpCitzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQsIE9wdGlvblNl
dDxCYXNlNjREZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNlNjREZWNvZGVNYXAgbWFwKQogewog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoIHx8
IGlucHV0LmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW5w
dXQuY2hhcmFjdGVyczgoKSwgbGVuZ3RoLCB7IH0sIEJhc2U2NERlY29kZU1hcDo6VVJMKTsKLSAg
ICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW5wdXQuY2hhcmFjdGVyczE2KCksIGxlbmd0
aCwgeyB9LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCkK
LXsKLSAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBiYXNlNjRE
ZWNvZGVJbnRlcm5hbChpbnB1dC5kYXRhKCksIGlucHV0LnNpemUoKSwgeyB9LCBCYXNlNjREZWNv
ZGVNYXA6OlVSTCk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRV
UkxEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbnB1dCkKLXsKLSAgICBpZiAoaW5wdXQuc2l6
ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5kYXRhKCkpLCBpbnB1dC5zaXplKCksIHsg
fSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOwotfQotCi1zdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKLXsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoZGF0YSwgbGVuZ3RoLCB7IH0s
IEJhc2U2NERlY29kZU1hcDo6VVJMKTsKLX0KLQotc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17
Ci0gICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBsZW5ndGgsIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOworICAg
ICAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoU3BhbiB7IGlucHV0LmNoYXJhY3RlcnM4
KCksIGxlbmd0aCB9LCBvcHRpb25zLCBtYXApOworICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRl
cm5hbChTcGFuIHsgaW5wdXQuY2hhcmFjdGVyczE2KCksIGxlbmd0aCB9LCBvcHRpb25zLCBtYXAp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvQmFz
ZTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaAkocmV2aXNp
b24gMjc5MDQ5KQorKysgU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1NwYW4uaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCkBAIC01MCwxMDMgKzUxLDE4MiBAQCBlbnVtIGNsYXNzIEJhc2U2NERlY29kZU9wdGlvbnMg
OiB1aW50OF90CiAKIGVudW0gY2xhc3MgQmFzZTY0RGVjb2RlTWFwIHsgRGVmYXVsdCwgVVJMIH07
CiAKK3N0cnVjdCBCYXNlNjRTcGVjaWZpY2F0aW9uIHsKKyAgICBTcGFuPGNvbnN0IHN0ZDo6Ynl0
ZT4gaW5wdXQ7CisgICAgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeTsKKyAgICBCYXNlNjRFbmNv
ZGVNYXAgbWFwOworfTsKKwogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhpbXVtQmFzZTY0
TGluZUxlbmd0aFdoZW5JbnNlcnRpbmdMRnMgPSA3NjsKIAogLy8gSWYgdGhlIGlucHV0IHN0cmlu
ZyBpcyBwYXRob2xvZ2ljYWxseSBsYXJnZSwganVzdCByZXR1cm4gbm90aGluZy4KIC8vIFJhdGhl
ciB0aGFuIGJlaW5nIHBlcmZlY3RseSBwcmVjaXNlLCB0aGlzIGlzIGEgYml0IGNvbnNlcnZhdGl2
ZS4KIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4aW11bUJhc2U2NEVuY29kZXJJbnB1dEJ1
ZmZlclNpemUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLyA3NyAqIDc2
IC8gNCAqIDMgLSAyOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBiYXNlNjRFbmNvZGUoY29u
c3Qgdm9pZCosIHVuc2lnbmVkLCBVQ2hhciosIHVuc2lnbmVkLCBCYXNlNjRFbmNvZGVQb2xpY3kg
PSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBC
YXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOwotV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYmFzZTY0
RW5jb2RlKGNvbnN0IHZvaWQqLCB1bnNpZ25lZCwgTENoYXIqLCB1bnNpZ25lZCwgQmFzZTY0RW5j
b2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5j
b2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKK3Vuc2lnbmVkIGNhbGN1bGF0ZUJh
c2U2NEVuY29kZWRTaXplKHVuc2lnbmVkIGlucHV0TGVuZ3RoLCBCYXNlNjRFbmNvZGVQb2xpY3kp
OwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVuY29kZVRvVmVj
dG9yKGNvbnN0IHZvaWQqLCB1bnNpZ25lZCwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5j
b2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2Rl
TWFwOjpEZWZhdWx0KTsKLVZlY3Rvcjx1aW50OF90PiBiYXNlNjRFbmNvZGVUb1ZlY3Rvcihjb25z
dCBWZWN0b3I8dWludDhfdD4mLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xp
Y3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRl
ZmF1bHQpOwotVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVuY29kZVRvVmVjdG9yKGNvbnN0IFZlY3Rv
cjxjaGFyPiYsIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJ
bnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQmFzZTY0T3JCYXNlNjRVUkxD
aGFyYWN0ZXIoQ2hhcmFjdGVyVHlwZSk7CisKK1dURl9FWFBPUlRfUFJJVkFURSB2b2lkIGJhc2U2
NEVuY29kZShTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4sIFNwYW48VUNoYXI+LCBCYXNlNjRFbmNvZGVQ
b2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVN
YXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
YmFzZTY0RW5jb2RlKFNwYW48Y29uc3Qgc3RkOjpieXRlPiwgU3BhbjxMQ2hhcj4sIEJhc2U2NEVu
Y29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVu
Y29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7CisKK1dURl9FWFBPUlRfUFJJVkFU
RSBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoU3Bhbjxjb25zdCBzdGQ6OmJ5
dGU+LCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0
TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOworVmVjdG9y
PHVpbnQ4X3Q+IGJhc2U2NEVuY29kZVRvVmVjdG9yKFNwYW48Y29uc3QgdWludDhfdD4sIEJhc2U2
NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2
NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7CitWZWN0b3I8dWludDhfdD4g
YmFzZTY0RW5jb2RlVG9WZWN0b3IoU3Bhbjxjb25zdCBjaGFyPiwgQmFzZTY0RW5jb2RlUG9saWN5
ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0g
QmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKIFZlY3Rvcjx1aW50OF90PiBiYXNlNjRFbmNvZGVU
b1ZlY3Rvcihjb25zdCBDU3RyaW5nJiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2Rl
UG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFw
OjpEZWZhdWx0KTsKK1ZlY3Rvcjx1aW50OF90PiBiYXNlNjRFbmNvZGVUb1ZlY3Rvcihjb25zdCB2
b2lkKiwgdW5zaWduZWQsIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6
RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVs
dCk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoY29u
c3Qgdm9pZCosIHVuc2lnbmVkLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xp
Y3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRl
ZmF1bHQpOwotU3RyaW5nIGJhc2U2NEVuY29kZVRvU3RyaW5nKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYsIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRM
RnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7Ci1TdHJpbmcg
YmFzZTY0RW5jb2RlVG9TdHJpbmcoY29uc3QgVmVjdG9yPGNoYXI+JiwgQmFzZTY0RW5jb2RlUG9s
aWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFw
ID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
YmFzZTY0RW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+LCBCYXNlNjRFbmNvZGVQ
b2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVN
YXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOworU3RyaW5nIGJhc2U2NEVuY29kZVRvU3Ry
aW5nKFNwYW48Y29uc3QgdWludDhfdD4sIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29k
ZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1h
cDo6RGVmYXVsdCk7CitTdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCBjaGFy
PiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExG
cywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKIFN0cmluZyBi
YXNlNjRFbmNvZGVUb1N0cmluZyhjb25zdCBDU3RyaW5nJiwgQmFzZTY0RW5jb2RlUG9saWN5ID0g
QmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFz
ZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKK1N0cmluZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhjb25z
dCB2b2lkKiwgdW5zaWduZWQsIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGlj
eTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVm
YXVsdCk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFN0cmluZyYsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRp
b25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsK
K1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0
RGVjb2RlKFNwYW48Y29uc3Qgc3RkOjpieXRlPiwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlv
bnM+ID0geyB9LCBCYXNlNjREZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVNYXA6OkRlZmF1bHQpOwog
V1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRE
ZWNvZGUoU3RyaW5nVmlldywgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBC
YXNlNjREZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVNYXA6OkRlZmF1bHQpOwotV1RGX0VYUE9SVF9Q
UklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBC
YXNlNjREZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVNYXA6OkRlZmF1bHQpOwotV1RGX0VYUE9SVF9Q
UklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3Qg
VmVjdG9yPGNoYXI+JiwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBCYXNl
NjREZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVNYXA6OkRlZmF1bHQpOwotV1RGX0VYUE9SVF9QUklW
QVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgdWlu
dDhfdCosIHVuc2lnbmVkLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gPSB7IH0sIEJh
c2U2NERlY29kZU1hcCA9IEJhc2U2NERlY29kZU1hcDo6RGVmYXVsdCk7Ci1XVEZfRVhQT1JUX1BS
SVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBj
aGFyKiwgdW5zaWduZWQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFz
ZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK3N0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3Bhbjxjb25zdCB1aW50OF90PiwgT3B0aW9u
U2V0PEJhc2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBCYXNlNjREZWNvZGVNYXAgPSBCYXNlNjRE
ZWNvZGVNYXA6OkRlZmF1bHQpOworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2
NERlY29kZShTcGFuPGNvbnN0IGNoYXI+LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4g
PSB7IH0sIEJhc2U2NERlY29kZU1hcCA9IEJhc2U2NERlY29kZU1hcDo6RGVmYXVsdCk7CitzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFN0cmluZyYsIE9w
dGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFz
ZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBi
YXNlNjREZWNvZGUoY29uc3Qgdm9pZCosIHVuc2lnbmVkLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2Rl
T3B0aW9ucz4gPSB7IH0sIEJhc2U2NERlY29kZU1hcCA9IEJhc2U2NERlY29kZU1hcDo6RGVmYXVs
dCk7CisKKy8vIEFsbCB0aGUgc2FtZSBmdW5jdGlvbnMgbW9kaWZpZWQgZm9yIGJhc2U2NHVybCwg
YXMgZGVmaW5lZCBpbiBSRkMgNDY0OC4KKy8vIFRoaXMgZm9ybWF0IHVzZXMgJy0nIGFuZCAnXycg
aW5zdGVhZCBvZiAnKycgYW5kICcvJyByZXNwZWN0aXZlbHkuCisKK1ZlY3Rvcjx1aW50OF90PiBi
YXNlNjRVUkxFbmNvZGVUb1ZlY3RvcihTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4pOworVmVjdG9yPHVp
bnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKFNwYW48Y29uc3QgdWludDhfdD4pOworVmVj
dG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKFNwYW48Y29uc3QgY2hhcj4pOwor
VmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKGNvbnN0IENTdHJpbmcmKTsK
K1ZlY3Rvcjx1aW50OF90PiBiYXNlNjRVUkxFbmNvZGVUb1ZlY3Rvcihjb25zdCB2b2lkKiwgdW5z
aWduZWQpOworCitTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCBzdGQ6
OmJ5dGU+KTsKK1N0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhTcGFuPGNvbnN0IHVpbnQ4
X3Q+KTsKK1N0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhTcGFuPGNvbnN0IGNoYXI+KTsK
K1N0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhjb25zdCBDU3RyaW5nJik7CitTdHJpbmcg
YmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKKworc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShTdHJpbmdWaWV3KTsKK3N0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgU3RyaW5n
Jik7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFNwYW48
Y29uc3Qgc3RkOjpieXRlPik7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0
VVJMRGVjb2RlKFNwYW48Y29uc3QgdWludDhfdD4pOworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGJhc2U2NFVSTERlY29kZShTcGFuPGNvbnN0IGNoYXI+KTsKK3N0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsK
KworLy8gVmVyc2lvbnMgZm9yIHVzZSB3aXRoIFN0cmluZ0J1aWxkZXIgLyBtYWtlU3RyaW5nLgor
CitCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NEVuY29kZWQoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+
LCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZz
LCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOworQmFzZTY0U3Bl
Y2lmaWNhdGlvbiBiYXNlNjRFbmNvZGVkKFNwYW48Y29uc3QgdWludDhfdD4sIEJhc2U2NEVuY29k
ZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29k
ZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7CitCYXNlNjRTcGVjaWZpY2F0aW9uIGJh
c2U2NEVuY29kZWQoY29uc3QgQ1N0cmluZyYsIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVu
Y29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29k
ZU1hcDo6RGVmYXVsdCk7CitCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NEVuY29kZWQoY29uc3Qg
dm9pZCosIHVuc2lnbmVkLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6
OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1
bHQpOwogCi1pbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVuY29kZVRvVmVjdG9yKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2
NEVuY29kZU1hcCBtYXApCitCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NFVSTEVuY29kZWQoU3Bh
bjxjb25zdCBzdGQ6OmJ5dGU+KTsKK0Jhc2U2NFNwZWNpZmljYXRpb24gYmFzZTY0VVJMRW5jb2Rl
ZChTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKK0Jhc2U2NFNwZWNpZmljYXRpb24gYmFzZTY0VVJMRW5j
b2RlZChjb25zdCBDU3RyaW5nJik7CitCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NFVSTEVuY29k
ZWQoY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKKworCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJh
c2U2NEVuY29kZVRvVmVjdG9yKFNwYW48Y29uc3QgdWludDhfdD4gaW5wdXQsIEJhc2U2NEVuY29k
ZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCiB7Ci0gICAgcmV0dXJuIGJhc2U2
NEVuY29kZVRvVmVjdG9yKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgpLCBwb2xpY3ksIG1hcCk7
CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvVmVjdG9yKGFzQnl0ZXMoaW5wdXQpLCBwb2xpY3ks
IG1hcCk7CiB9CiAKLWlubGluZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3Io
Y29uc3QgVmVjdG9yPGNoYXI+JiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFz
ZTY0RW5jb2RlTWFwIG1hcCkKK2lubGluZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9W
ZWN0b3IoU3Bhbjxjb25zdCBjaGFyPiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwg
QmFzZTY0RW5jb2RlTWFwIG1hcCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3Io
aW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCksIHBvbGljeSwgbWFwKTsKKyAgICByZXR1cm4gYmFz
ZTY0RW5jb2RlVG9WZWN0b3IoYXNCeXRlcyhpbnB1dCksIHBvbGljeSwgbWFwKTsKIH0KIAogaW5s
aW5lIFZlY3Rvcjx1aW50OF90PiBiYXNlNjRFbmNvZGVUb1ZlY3Rvcihjb25zdCBDU3RyaW5nJiBp
bnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKIHsK
LSAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoaW5wdXQuZGF0YSgpLCBpbnB1dC5sZW5n
dGgoKSwgcG9saWN5LCBtYXApOworICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1ZlY3RvcihpbnB1
dC5ieXRlcygpLCBwb2xpY3ksIG1hcCk7Cit9CisKK2lubGluZSBWZWN0b3I8dWludDhfdD4gYmFz
ZTY0RW5jb2RlVG9WZWN0b3IoY29uc3Qgdm9pZCogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCwgQmFz
ZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKK3sKKyAgICByZXR1
cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoeyBzdGF0aWNfY2FzdDxjb25zdCBzdGQ6OmJ5dGUqPihp
bnB1dCksIGxlbmd0aCB9LCBwb2xpY3ksIG1hcCk7CiB9CiAKLWlubGluZSBTdHJpbmcgYmFzZTY0
RW5jb2RlVG9TdHJpbmcoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCwgQmFzZTY0RW5jb2Rl
UG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKK2lubGluZSBTdHJpbmcgYmFzZTY0
RW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCB1aW50OF90PiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9s
aWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCksIHBvbGljeSwgbWFwKTsKKyAg
ICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYXNCeXRlcyhpbnB1dCksIHBvbGljeSwgbWFw
KTsKIH0KIAotaW5saW5lIFN0cmluZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhjb25zdCBWZWN0b3I8
Y2hhcj4mIGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAg
bWFwKQoraW5saW5lIFN0cmluZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhTcGFuPGNvbnN0IGNoYXI+
IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQog
ewotICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbnB1dC5kYXRhKCksIGlucHV0LnNp
emUoKSwgcG9saWN5LCBtYXApOworICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhhc0J5
dGVzKGlucHV0KSwgcG9saWN5LCBtYXApOwogfQogCiBpbmxpbmUgU3RyaW5nIGJhc2U2NEVuY29k
ZVRvU3RyaW5nKGNvbnN0IENTdHJpbmcmIGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5
LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewotICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhpbnB1dC5kYXRhKCksIGlucHV0Lmxlbmd0aCgpLCBwb2xpY3ksIG1hcCk7CisgICAgcmV0dXJu
IGJhc2U2NEVuY29kZVRvU3RyaW5nKGlucHV0LmJ5dGVzKCksIHBvbGljeSwgbWFwKTsKIH0KIAor
aW5saW5lIFN0cmluZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhjb25zdCB2b2lkKiBpbnB1dCwgdW5z
aWduZWQgbGVuZ3RoLCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAg
bWFwKQoreworICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyh7IHN0YXRpY19jYXN0PGNv
bnN0IHN0ZDo6Ynl0ZSo+KGlucHV0KSwgbGVuZ3RoIH0sIHBvbGljeSwgbWFwKTsKK30KIAotLy8g
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vIEFsbCB0aGUgc2FtZSBmdW5jdGlvbnMg
bW9kaWZpZWQgZm9yIGJhc2U2NHVybCwgYXMgZGVmaW5lZCBpbiBSRkMgNDY0OC4KLS8vIFRoaXMg
Zm9ybWF0IHVzZXMgJy0nIGFuZCAnXycgaW5zdGVhZCBvZiAnKycgYW5kICcvJyByZXNwZWN0aXZl
bHkuCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5saW5lIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3Bhbjxjb25zdCB1aW50OF90PiBpbnB1
dCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1h
cCBtYXApCit7CisgICAgcmV0dXJuIGJhc2U2NERlY29kZShhc0J5dGVzKGlucHV0KSwgb3B0aW9u
cywgbWFwKTsKK30KIAotVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKGNv
bnN0IHZvaWQqLCB1bnNpZ25lZCk7Ci1WZWN0b3I8dWludDhfdD4gYmFzZTY0VVJMRW5jb2RlVG9W
ZWN0b3IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1WZWN0b3I8dWludDhfdD4gYmFzZTY0VVJM
RW5jb2RlVG9WZWN0b3IoY29uc3QgVmVjdG9yPGNoYXI+Jik7Ci1WZWN0b3I8dWludDhfdD4gYmFz
ZTY0VVJMRW5jb2RlVG9WZWN0b3IoY29uc3QgQ1N0cmluZyYpOworaW5saW5lIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3Bhbjxjb25zdCBjaGFyPiBpbnB1dCwg
T3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBt
YXApCit7CisgICAgcmV0dXJuIGJhc2U2NERlY29kZShhc0J5dGVzKGlucHV0KSwgb3B0aW9ucywg
bWFwKTsKK30KIAotU3RyaW5nIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGNvbnN0IHZvaWQqLCB1
bnNpZ25lZCk7Ci1TdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+Jik7Ci1TdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoY29uc3QgVmVjdG9yPGNo
YXI+Jik7Ci1TdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoY29uc3QgQ1N0cmluZyYpOwor
aW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3Qg
U3RyaW5nJiBpbnB1dCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJh
c2U2NERlY29kZU1hcCBtYXApCit7CisgICAgcmV0dXJuIGJhc2U2NERlY29kZShTdHJpbmdWaWV3
IHsgaW5wdXQgfSwgb3B0aW9ucywgbWFwKTsKK30KIAotV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgU3RyaW5nJik7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2
NFVSTERlY29kZShTdHJpbmdWaWV3KTsKLVdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYp
OwotV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNl
NjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+Jik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCB1aW50OF90
KiwgdW5zaWduZWQpOwotV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVkKTsKK2lubGluZSBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IHZvaWQqIGlu
cHV0LCB1bnNpZ25lZCBsZW5ndGgsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiBvcHRp
b25zLCBCYXNlNjREZWNvZGVNYXAgbWFwKQoreworICAgIHJldHVybiBiYXNlNjREZWNvZGUoeyBz
dGF0aWNfY2FzdDxjb25zdCBzdGQ6OmJ5dGUqPihpbnB1dCksIGxlbmd0aCB9LCBvcHRpb25zLCBt
YXApOworfQorCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9y
KFNwYW48Y29uc3Qgc3RkOjpieXRlPiBpbnB1dCkKK3sKKyAgICByZXR1cm4gYmFzZTY0RW5jb2Rl
VG9WZWN0b3IoaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6
OlVSTCk7Cit9CisKK2lubGluZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0VVJMRW5jb2RlVG9WZWN0
b3IoU3Bhbjxjb25zdCB1aW50OF90PiBpbnB1dCkKK3sKKyAgICByZXR1cm4gYmFzZTY0RW5jb2Rl
VG9WZWN0b3IoaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6
OlVSTCk7Cit9CisKK2lubGluZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0VVJMRW5jb2RlVG9WZWN0
b3IoU3Bhbjxjb25zdCBjaGFyPiBpbnB1dCkKK3sKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9W
ZWN0b3IoaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVS
TCk7Cit9CisKK2lubGluZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0VVJMRW5jb2RlVG9WZWN0b3Io
Y29uc3QgQ1N0cmluZyYgaW5wdXQpCit7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvVmVjdG9y
KGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOwor
fQogCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKGNvbnN0
IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIGJhc2U2NEVuY29k
ZVRvVmVjdG9yKGlucHV0LCBsZW5ndGgsIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRF
bmNvZGVNYXA6OlVSTCk7CiB9CiAKLWlubGluZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0VVJMRW5j
b2RlVG9WZWN0b3IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCkKK2lubGluZSBTdHJpbmcg
YmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0KQogewot
ICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1ZlY3RvcihpbnB1dC5kYXRhKCksIGlucHV0LnNpemUo
KSwgQmFzZTY0RW5jb2RlUG9saWN5OjpVUkwsIEJhc2U2NEVuY29kZU1hcDo6VVJMKTsKKyAgICBy
ZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeTo6VVJM
LCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CiB9CiAKLWlubGluZSBWZWN0b3I8dWludDhfdD4gYmFz
ZTY0VVJMRW5jb2RlVG9WZWN0b3IoY29uc3QgVmVjdG9yPGNoYXI+JiBpbnB1dCkKK2lubGluZSBT
dHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCB1aW50OF90PiBpbnB1dCkK
IHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoaW5wdXQuZGF0YSgpLCBpbnB1dC5z
aXplKCksIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7Cisg
ICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvU3RyaW5nKGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3k6
OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOwogfQogCi1pbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+
IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKGNvbnN0IENTdHJpbmcmIGlucHV0KQoraW5saW5lIFN0
cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhTcGFuPGNvbnN0IGNoYXI+IGlucHV0KQogewot
ICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1ZlY3RvcihpbnB1dC5kYXRhKCksIGlucHV0Lmxlbmd0
aCgpLCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOworICAg
IHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5OjpV
UkwsIEJhc2U2NEVuY29kZU1hcDo6VVJMKTsKK30KKworaW5saW5lIFN0cmluZyBiYXNlNjRVUkxF
bmNvZGVUb1N0cmluZyhjb25zdCBDU3RyaW5nJiBpbnB1dCkKK3sKKyAgICByZXR1cm4gYmFzZTY0
RW5jb2RlVG9TdHJpbmcoaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNv
ZGVNYXA6OlVSTCk7CiB9CiAKIGlubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmco
Y29uc3Qgdm9pZCogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTE1NCwyMiArMjM0LDM3IEBA
IGlubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoY28KICAgICByZXR1cm4gYmFz
ZTY0RW5jb2RlVG9TdHJpbmcoaW5wdXQsIGxlbmd0aCwgQmFzZTY0RW5jb2RlUG9saWN5OjpVUkws
IEJhc2U2NEVuY29kZU1hcDo6VVJMKTsKIH0KIAotaW5saW5lIFN0cmluZyBiYXNlNjRVUkxFbmNv
ZGVUb1N0cmluZyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0KQoraW5saW5lIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoU3RyaW5nVmlldyBpbnB1dCkK
IHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5wdXQuZGF0YSgpLCBpbnB1dC5z
aXplKCksIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7Cisg
ICAgcmV0dXJuIGJhc2U2NERlY29kZShpbnB1dCwgeyB9LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7
CiB9CiAKLWlubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoY29uc3QgVmVjdG9y
PGNoYXI+JiBpbnB1dCkKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFz
ZTY0VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCiB7Ci0gICAgcmV0dXJuIGJhc2U2NEVu
Y29kZVRvU3RyaW5nKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgpLCBCYXNlNjRFbmNvZGVQb2xp
Y3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOworICAgIHJldHVybiBiYXNlNjREZWNvZGUo
aW5wdXQsIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOwogfQogCi1pbmxpbmUgU3RyaW5nIGJh
c2U2NFVSTEVuY29kZVRvU3RyaW5nKGNvbnN0IENTdHJpbmcmIGlucHV0KQoraW5saW5lIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoU3Bhbjxjb25zdCBzdGQ6
OmJ5dGU+IGlucHV0KQoreworICAgIHJldHVybiBiYXNlNjREZWNvZGUoaW5wdXQsIHsgfSwgQmFz
ZTY0RGVjb2RlTWFwOjpVUkwpOworfQorCitpbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGJhc2U2NFVSTERlY29kZShTcGFuPGNvbnN0IHVpbnQ4X3Q+IGlucHV0KQoreworICAg
IHJldHVybiBiYXNlNjREZWNvZGUoaW5wdXQsIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOwor
fQorCitpbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29k
ZShTcGFuPGNvbnN0IGNoYXI+IGlucHV0KQoreworICAgIHJldHVybiBiYXNlNjREZWNvZGUoaW5w
dXQsIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOworfQorCitpbmxpbmUgc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCB2b2lkKiBpbnB1dCwgdW5z
aWduZWQgbGVuZ3RoKQogewotICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbnB1dC5k
YXRhKCksIGlucHV0Lmxlbmd0aCgpLCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5j
b2RlTWFwOjpVUkwpOworICAgIHJldHVybiBiYXNlNjREZWNvZGUoaW5wdXQsIGxlbmd0aCwgeyB9
LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Jhc2U2NE9yQmFzZTY0VVJMQ2hhcmFjdGVyKENo
YXJhY3RlclR5cGUgYykKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNC
YXNlNjRPckJhc2U2NFVSTENoYXJhY3RlcihDaGFyYWN0ZXJUeXBlIGMpCiB7CiAgICAgcmV0dXJu
IGlzQVNDSUlBbHBoYW51bWVyaWMoYykgfHwgYyA9PSAnKycgfHwgYyA9PSAnLycgfHwgYyA9PSAn
LScgfHwgYyA9PSAnXyc7CiB9CkBAIC0yMDcsNTggKzMwMiw1MSBAQCBpbmxpbmUgdW5zaWduZWQg
Y2FsY3VsYXRlQmFzZTY0RW5jb2RlZFNpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0cnVjdCBCYXNl
NjRTcGVjaWZpY2F0aW9uIHsKLSAgICBjb25zdCB2b2lkKiBpbnB1dERhdGE7Ci0gICAgdW5zaWdu
ZWQgaW5wdXRMZW5ndGg7Ci0gICAgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeTsKLSAgICBCYXNl
NjRFbmNvZGVNYXAgbWFwOwotfTsKLQotaW5saW5lIEJhc2U2NFNwZWNpZmljYXRpb24gYmFzZTY0
RW5jb2RlZChjb25zdCB2b2lkKiBpbnB1dERhdGEsIHVuc2lnbmVkIGlucHV0TGVuZ3RoLCBCYXNl
NjRFbmNvZGVQb2xpY3kgcG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExG
cywgQmFzZTY0RW5jb2RlTWFwIG1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCkKK2lubGlu
ZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NEVuY29kZWQoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+
IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQog
ewotICAgIHJldHVybiB7IGlucHV0RGF0YSwgaW5wdXRMZW5ndGgsIHBvbGljeSwgbWFwIH07Cisg
ICAgcmV0dXJuIHsgaW5wdXQsIHBvbGljeSwgbWFwIH07CiB9CiAKLWlubGluZSBCYXNlNjRTcGVj
aWZpY2F0aW9uIGJhc2U2NEVuY29kZWQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCwgQmFz
ZTY0RW5jb2RlUG9saWN5IHBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRM
RnMpCitpbmxpbmUgQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRFbmNvZGVkKFNwYW48Y29uc3Qg
dWludDhfdD4gaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1h
cCBtYXApCiB7Ci0gICAgcmV0dXJuIGJhc2U2NEVuY29kZWQoaW5wdXQuZGF0YSgpLCBpbnB1dC5z
aXplKCksIHBvbGljeSk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZWQoYXNCeXRlcyhpbnB1dCks
IHBvbGljeSwgbWFwKTsKIH0KIAotaW5saW5lIEJhc2U2NFNwZWNpZmljYXRpb24gYmFzZTY0RW5j
b2RlZChjb25zdCBWZWN0b3I8Y2hhcj4mIGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5
ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcykKK2lubGluZSBCYXNlNjRTcGVj
aWZpY2F0aW9uIGJhc2U2NEVuY29kZWQoY29uc3QgQ1N0cmluZyYgaW5wdXQsIEJhc2U2NEVuY29k
ZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCiB7Ci0gICAgcmV0dXJuIGJhc2U2
NEVuY29kZWQoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCksIHBvbGljeSk7CisgICAgcmV0dXJu
IGJhc2U2NEVuY29kZWQoaW5wdXQuYnl0ZXMoKSwgcG9saWN5LCBtYXApOwogfQogCi1pbmxpbmUg
QmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRFbmNvZGVkKGNvbnN0IENTdHJpbmcmIGlucHV0LCBC
YXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2Vy
dExGcykKK2lubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NEVuY29kZWQoY29uc3Qgdm9p
ZCogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFz
ZTY0RW5jb2RlTWFwIG1hcCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlZChpbnB1dC5kYXRh
KCksIGlucHV0Lmxlbmd0aCgpLCBwb2xpY3kpOworICAgIHJldHVybiBiYXNlNjRFbmNvZGVkKHsg
c3RhdGljX2Nhc3Q8Y29uc3Qgc3RkOjpieXRlKj4oaW5wdXQpLCBsZW5ndGggfSwgcG9saWN5LCBt
YXApOwogfQogCi1pbmxpbmUgQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRVUkxFbmNvZGVkKGNv
bnN0IHZvaWQqIGlucHV0RGF0YSwgdW5zaWduZWQgaW5wdXRMZW5ndGgpCitpbmxpbmUgQmFzZTY0
U3BlY2lmaWNhdGlvbiBiYXNlNjRVUkxFbmNvZGVkKFNwYW48Y29uc3Qgc3RkOjpieXRlPiBpbnB1
dCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlZChpbnB1dERhdGEsIGlucHV0TGVuZ3RoLCBC
YXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOworICAgIHJldHVy
biBiYXNlNjRFbmNvZGVkKGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5j
b2RlTWFwOjpVUkwpOwogfQogCi1pbmxpbmUgQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRVUkxF
bmNvZGVkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5wdXQpCitpbmxpbmUgQmFzZTY0U3BlY2lm
aWNhdGlvbiBiYXNlNjRVUkxFbmNvZGVkKFNwYW48Y29uc3QgdWludDhfdD4gaW5wdXQpCiB7Ci0g
ICAgcmV0dXJuIGJhc2U2NEVuY29kZWQoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCksIEJhc2U2
NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CisgICAgcmV0dXJuIGJh
c2U2NEVuY29kZWQoaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVN
YXA6OlVSTCk7CiB9CiAKLWlubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NFVSTEVuY29k
ZWQoY29uc3QgVmVjdG9yPGNoYXI+JiBpbnB1dCkKK2lubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9u
IGJhc2U2NFVSTEVuY29kZWQoY29uc3QgQ1N0cmluZyYgaW5wdXQpCiB7Ci0gICAgcmV0dXJuIGJh
c2U2NEVuY29kZWQoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCksIEJhc2U2NEVuY29kZVBvbGlj
eTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZWQo
aW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CiB9
CiAKLWlubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NFVSTEVuY29kZWQoY29uc3QgQ1N0
cmluZyYgaW5wdXQpCitpbmxpbmUgQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRVUkxFbmNvZGVk
KGNvbnN0IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIGJhc2U2
NEVuY29kZWQoaW5wdXQuZGF0YSgpLCBpbnB1dC5sZW5ndGgoKSwgQmFzZTY0RW5jb2RlUG9saWN5
OjpVUkwsIEJhc2U2NEVuY29kZU1hcDo6VVJMKTsKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlZChp
bnB1dCwgbGVuZ3RoLCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpV
UkwpOwogfQogCiB0ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPEJhc2U2NFNwZWNp
ZmljYXRpb24+IHsKIHB1YmxpYzoKICAgICBTdHJpbmdUeXBlQWRhcHRlcihjb25zdCBCYXNlNjRT
cGVjaWZpY2F0aW9uJiBiYXNlNjQpCiAgICAgICAgIDogbV9iYXNlNjQgeyBiYXNlNjQgfQotICAg
ICAgICAsIG1fZW5jb2RlZExlbmd0aCB7IGNhbGN1bGF0ZUJhc2U2NEVuY29kZWRTaXplKGJhc2U2
NC5pbnB1dExlbmd0aCwgYmFzZTY0LnBvbGljeSkgfQorICAgICAgICAsIG1fZW5jb2RlZExlbmd0
aCB7IGNhbGN1bGF0ZUJhc2U2NEVuY29kZWRTaXplKGJhc2U2NC5pbnB1dC5zaXplKCksIGJhc2U2
NC5wb2xpY3kpIH0KICAgICB7CiAgICAgfQogCkBAIC0yNjcsNyArMzU1LDcgQEAgcHVibGljOgog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB3cml0ZVRvKENoYXJh
Y3RlclR5cGUqIGRlc3RpbmF0aW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgYmFzZTY0RW5jb2Rl
KG1fYmFzZTY0LmlucHV0RGF0YSwgbV9iYXNlNjQuaW5wdXRMZW5ndGgsIGRlc3RpbmF0aW9uLCBt
X2VuY29kZWRMZW5ndGgsIG1fYmFzZTY0LnBvbGljeSwgbV9iYXNlNjQubWFwKTsKKyAgICAgICAg
YmFzZTY0RW5jb2RlKG1fYmFzZTY0LmlucHV0LCBTcGFuIHsgZGVzdGluYXRpb24sIG1fZW5jb2Rl
ZExlbmd0aCB9LCBtX2Jhc2U2NC5wb2xpY3ksIG1fYmFzZTY0Lm1hcCk7CiAgICAgfQogCiBwcml2
YXRlOgpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgJKHJldmlzaW9uIDI3OTA0OSkKKysrIFNvdXJj
ZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogCiBuYW1lc3Bh
Y2UgV1RGIHsKIApAQCAtNzMsNiArNzQsMjAgQEAgcHVibGljOgogCiAgICAgY29uc3QgdWludDhf
dCogZGF0YUFzVUludDhQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKCkpOyB9CiAKKyAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiB7
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1
ZmZlci0+bGVuZ3RoKCkgfTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBTcGFu
PGNvbnN0IHVpbnQ4X3Q+IGJ5dGVzSW5sdWRpbmdOdWxsVGVybWluYXRvcigpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAobV9idWZmZXIpCisgICAgICAgICAgICByZXR1cm4geyByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2J1ZmZlci0+ZGF0YSgpKSwgbV9idWZmZXItPmxlbmd0
aCgpICsgMSB9OworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBjaGFyKiBtdXRhYmxlRGF0YSgpOwogICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdAog
ICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431802</attachid>
            <date>2021-06-19 13:50:07 -0700</date>
            <delta_ts>2021-06-19 19:05:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227132-20210619135006.patch</filename>
            <type>text/plain</type>
            <size>35427</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzkwNTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDIxLTA2LTE5ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBTcGFuIGluIEJhc2U2NC5oCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcxMzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlcyBvdmVybG9hZHMg
dGFraW5nIFZlY3RvcnMgd2l0aCBvbmVzIHRha2luZyBTcGFucworICAgICAgICBhbmQgYWRkIG92
ZXJsb2FkcyBmb3IgU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IHdoaWNoIGFsbCB0aGUKKyAgICAgICAg
b3RoZXJzIGFyZSBub3cgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YuIFRoaXMgaXMgdXNlZnVsIHNp
bmNlCisgICAgICAgIGFueSBTcGFuIGNhbiBiZSB0dXJuZWQgaW50byBvbmUgb2YgdHlwZSBTcGFu
PGNvbnN0IHN0ZDo6Ynl0ZT4KKyAgICAgICAganVzdCBieSBjYWxsaW5nIGFzQnl0ZXMoZXhpc3Rp
bmdTcGFuKS4KKworICAgICAgICBUaGlzIGxlYXZlcyBtb3N0IG9mIHRoZSBleGlzdGluZyBvdmVy
bG9hZHMgaW4gcGxhY2UgKHRob3VnaAorICAgICAgICBzaW1wbGlmaWVzIHRoZW0gYnkgaW1wbGVt
ZW50aW5nIHRoZW0gYXMgU3BhbiBjb250cnVjdGlvbnMpCisgICAgICAgIHRob3VnaCB3ZSBzaG91
bGQgY29uc2lkZXIgcmVtb3Zpbmcgc29tZSBpbiBhIHNlcGFyYXRlIHBhc3MuCisKKyAgICAgICAg
KiB3dGYvVmVjdG9yLmg6CisgICAgICAgIEFkZCB2YWx1ZV90eXBlIHR5cGVkZWYgc28gdGhhdCBW
ZWN0b3I8VD4gY2FuIGJlIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgZGVkdWNlZCBhcyBTcGFuPFQ+
LgorCisgICAgICAgICogd3RmL3RleHQvQ1N0cmluZy5oOgorICAgICAgICBBZGQgYnl0ZXMoKSBh
bmQgYnl0ZXNJbmx1ZGluZ051bGxUZXJtaW5hdG9yKCkgKG9ubHkgdGhlIGZvcm1lcgorICAgICAg
ICBpcyB1c2VkIGluIHRoaXMgcGF0Y2gsIGJ1dCB0aGUgbGF0ZXIgd2lsbCBiZSBuZWVkZWQgc2hv
cnRseSkKKyAgICAgICAgd2hpY2ggcmV0dXJuIFNwYW48Y29uc3QgdWludDhfdD4gb2YgdGhlIENT
dHJpbmcuIEkgY2hvc2UgdG8gdXNlCisgICAgICAgIGFuIGV4cGxpY2l0IGZ1bmN0aW9uLCByYXRo
ZXIgdGhhbiBtYWtpbmcgaXQgY29udmVyaWJsZSB0byBTcGFuCisgICAgICAgIGxpa2UgVmVjdG9y
LCBiZWNhdXNlIHNvbWUgY2FsbGVycyB3aWxsIHdhbnQgdGhlIG51bGwgdGVybWluYXRvcgorICAg
ICAgICBhbmQgc29tZSB3aWxsIG5vdC4KKworICAgICAgICAqIHd0Zi90ZXh0L0Jhc2U2NC5jcHA6
CisgICAgICAgICogd3RmL3RleHQvQmFzZTY0Lmg6CisgICAgICAgIENhbm9uaWNhbGl6ZSBhbGwg
aW5wdXQgYnVmZmVycyBlaXRoZXIgYXMgYSBTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gb3IKKyAgICAg
ICAgYSBTdHJpbmdWaWV3LCBtYWtpbmcgYWxsIHRoZSBvdGhlciBvdmVybG9hZHMganVzdCBmb3J3
YXJkIHRvIG9uZSBvZgorICAgICAgICB0aG9zZSB0d28gKFN0cmluZyAtPiBTdHJpbmdWaWV3LCBl
dmVyeXRoaW5nIGVsc2UgLT4gU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+KS4KKworICAgICAgICBDbGVh
biB1cCB0aGUgaGVhZGVyIGEgYml0IGJ5IHB1dHRpbmcgYWxsIHRoZSBkZWNsYXJhdGlvbnMgYXQg
dGhlIHRvcCBvZgorICAgICAgICB0aGUgZmlsZS4KKwogMjAyMS0wNi0xNyAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIERpc2FibGUgaGFyZHdh
cmUgZGVjb2RpbmcgaW4gdGhlIFdlYlByb2Nlc3MKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCShyZXZpc2lvbiAyNzkw
NDkpCisrKyBTb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjEyLDcg
KzYxMiw5IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogCiBwdWJsaWM6CisgICAgLy8gRklYTUU6IFJlbW92ZSB1c2VzIG9mIFZhbHVlVHlw
ZSBhbmQgc3RhbmRhcmRpemUgb24gdmFsdWVfdHlwZSwgd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHN0
ZDo6c3Bhbi4KICAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOworICAgIHR5cGVkZWYgVCB2YWx1ZV90
eXBlOwogCiAgICAgdHlwZWRlZiBUKiBpdGVyYXRvcjsKICAgICB0eXBlZGVmIGNvbnN0IFQqIGNv
bnN0X2l0ZXJhdG9yOwpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcAkocmV2aXNpb24gMjc5MDQ5
KQorKysgU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
MywxMCArOTMsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgYmFzZTY0VVJMRGVjTWFwW2RlY29kZQog
ICAgIDB4MzEsIDB4MzIsIDB4MzMsIG5vbkFscGhhYmV0LCBub25BbHBoYWJldCwgbm9uQWxwaGFi
ZXQsIG5vbkFscGhhYmV0LCBub25BbHBoYWJldAogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gc3RhdGljIHZvaWQgYmFzZTY0RW5jb2RlSW50ZXJuYWwoY29uc3QgdWludDhf
dCogaW5wdXREYXRhQnVmZmVyLCB1bnNpZ25lZCBpbnB1dExlbmd0aCwgQ2hhcmFjdGVyVHlwZSog
ZGVzdGluYXRpb25EYXRhQnVmZmVyLCB1bnNpZ25lZCBkZXN0aW5hdGlvbkxlbmd0aCwgQmFzZTY0
RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKK3RlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyB2b2lkIGJhc2U2NEVuY29kZUludGVybmFsKFNwYW48
Y29uc3QgdWludDhfdD4gaW5wdXREYXRhQnVmZmVyLCBTcGFuPENoYXJhY3RlclR5cGU+IGRlc3Rp
bmF0aW9uRGF0YUJ1ZmZlciwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2Rl
TWFwIG1hcCkKIHsKLSAgICBBU1NFUlQoZGVzdGluYXRpb25MZW5ndGggPiAwKTsKLSAgICBBU1NF
UlQoY2FsY3VsYXRlQmFzZTY0RW5jb2RlZFNpemUoaW5wdXRMZW5ndGgsIHBvbGljeSkgPT0gZGVz
dGluYXRpb25MZW5ndGgpOworICAgIEFTU0VSVChkZXN0aW5hdGlvbkRhdGFCdWZmZXIuc2l6ZSgp
ID4gMCk7CisgICAgQVNTRVJUKGNhbGN1bGF0ZUJhc2U2NEVuY29kZWRTaXplKGlucHV0RGF0YUJ1
ZmZlci5zaXplKCksIHBvbGljeSkgPT0gZGVzdGluYXRpb25EYXRhQnVmZmVyLnNpemUoKSk7CiAK
ICAgICBhdXRvIGVuY29kZU1hcCA9IChtYXAgPT0gQmFzZTY0RW5jb2RlTWFwOjpVUkwpID8gYmFz
ZTY0VVJMRW5jTWFwIDogYmFzZTY0RW5jTWFwOwogCkBAIC0xMDQsMTAgKzEwNCwxMCBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgCiAgICAgdW5zaWduZWQgZGlkeCA9
IDA7CiAgICAgdW5zaWduZWQgY291bnQgPSAwOwogCi0gICAgYm9vbCBpbnNlcnRMRnMgPSAocG9s
aWN5ID09IEJhc2U2NEVuY29kZVBvbGljeTo6SW5zZXJ0TEZzICYmIGRlc3RpbmF0aW9uTGVuZ3Ro
ID4gbWF4aW11bUJhc2U2NExpbmVMZW5ndGhXaGVuSW5zZXJ0aW5nTEZzKTsKKyAgICBib29sIGlu
c2VydExGcyA9IChwb2xpY3kgPT0gQmFzZTY0RW5jb2RlUG9saWN5OjpJbnNlcnRMRnMgJiYgZGVz
dGluYXRpb25EYXRhQnVmZmVyLnNpemUoKSA+IG1heGltdW1CYXNlNjRMaW5lTGVuZ3RoV2hlbklu
c2VydGluZ0xGcyk7CiAKLSAgICBpZiAoaW5wdXRMZW5ndGggPiAxKSB7Ci0gICAgICAgIHdoaWxl
IChzaWR4IDwgaW5wdXRMZW5ndGggLSAyKSB7CisgICAgaWYgKGlucHV0RGF0YUJ1ZmZlci5zaXpl
KCkgPiAxKSB7CisgICAgICAgIHdoaWxlIChzaWR4IDwgaW5wdXREYXRhQnVmZmVyLnNpemUoKSAt
IDIpIHsKICAgICAgICAgICAgIGlmIChpbnNlcnRMRnMpIHsKICAgICAgICAgICAgICAgICBpZiAo
Y291bnQgJiYgIShjb3VudCAlIG1heGltdW1CYXNlNjRMaW5lTGVuZ3RoV2hlbkluc2VydGluZ0xG
cykpCiAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uRGF0YUJ1ZmZlcltkaWR4KytdID0g
J1xuJzsKQEAgLTEyMiw3MSArMTIyLDc2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHN0YXRpYyAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChzaWR4IDwgaW5wdXRMZW5n
dGgpIHsKKyAgICBpZiAoc2lkeCA8IGlucHV0RGF0YUJ1ZmZlci5zaXplKCkpIHsKICAgICAgICAg
aWYgKGluc2VydExGcyAmJiAoY291bnQgPiAwKSAmJiAhKGNvdW50ICUgbWF4aW11bUJhc2U2NExp
bmVMZW5ndGhXaGVuSW5zZXJ0aW5nTEZzKSkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uRGF0YUJ1
ZmZlcltkaWR4KytdID0gJ1xuJzsKIAogICAgICAgICBkZXN0aW5hdGlvbkRhdGFCdWZmZXJbZGlk
eCsrXSA9IGVuY29kZU1hcFsoaW5wdXREYXRhQnVmZmVyW3NpZHhdID4+IDIpICYgMDc3XTsKLSAg
ICAgICAgaWYgKHNpZHggPCBpbnB1dExlbmd0aCAtIDEpIHsKKyAgICAgICAgaWYgKHNpZHggPCBp
bnB1dERhdGFCdWZmZXIuc2l6ZSgpIC0gMSkgewogICAgICAgICAgICAgZGVzdGluYXRpb25EYXRh
QnVmZmVyW2RpZHgrK10gPSBlbmNvZGVNYXBbKChpbnB1dERhdGFCdWZmZXJbc2lkeCArIDFdID4+
IDQpICYgMDE3KSB8ICgoaW5wdXREYXRhQnVmZmVyW3NpZHhdIDw8IDQpICYgMDc3KV07CiAgICAg
ICAgICAgICBkZXN0aW5hdGlvbkRhdGFCdWZmZXJbZGlkeCsrXSA9IGVuY29kZU1hcFsgKGlucHV0
RGF0YUJ1ZmZlcltzaWR4ICsgMV0gPDwgMikgJiAwNzddOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIGRlc3RpbmF0aW9uRGF0YUJ1ZmZlcltkaWR4KytdID0gZW5jb2RlTWFwWyAoaW5wdXRE
YXRhQnVmZmVyW3NpZHggICAgXSA8PCA0KSAmIDA3N107CiAgICAgfQogCi0gICAgQVNTRVJUKHBv
bGljeSAhPSBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCB8fCBkaWR4ID09IGRlc3RpbmF0aW9uTGVu
Z3RoKTsKKyAgICBBU1NFUlQocG9saWN5ICE9IEJhc2U2NEVuY29kZVBvbGljeTo6VVJMIHx8IGRp
ZHggPT0gZGVzdGluYXRpb25EYXRhQnVmZmVyLnNpemUoKSk7CiAKLSAgICB3aGlsZSAoZGlkeCA8
IGRlc3RpbmF0aW9uTGVuZ3RoKQorICAgIHdoaWxlIChkaWR4IDwgZGVzdGluYXRpb25EYXRhQnVm
ZmVyLnNpemUoKSkKICAgICAgICAgZGVzdGluYXRpb25EYXRhQnVmZmVyW2RpZHgrK10gPSAnPSc7
CiB9CiAKLXN0YXRpYyBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlSW50ZXJuYWwoY29uc3Qg
dWludDhfdCogaW5wdXREYXRhQnVmZmVyLCB1bnNpZ25lZCBpbnB1dExlbmd0aCwgQmFzZTY0RW5j
b2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHN0YXRpYyB2b2lkIGJhc2U2NEVuY29kZUludGVybmFsKFNwYW48Y29u
c3Qgc3RkOjpieXRlPiBpbnB1dCwgU3BhbjxDaGFyYWN0ZXJUeXBlPiBkZXN0aW5hdGlvbkRhdGFC
dWZmZXIsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCiB7
Ci0gICAgYXV0byBkZXN0aW5hdGlvbkxlbmd0aCA9IGNhbGN1bGF0ZUJhc2U2NEVuY29kZWRTaXpl
KGlucHV0TGVuZ3RoLCBwb2xpY3kpOworICAgIGJhc2U2NEVuY29kZUludGVybmFsKFNwYW4geyBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5kYXRhKCkpLCBpbnB1dC5zaXpl
KCkgfSwgZGVzdGluYXRpb25EYXRhQnVmZmVyLCBwb2xpY3ksIG1hcCk7Cit9CisKK3N0YXRpYyBW
ZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlSW50ZXJuYWwoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+
IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQor
eworICAgIGF1dG8gZGVzdGluYXRpb25MZW5ndGggPSBjYWxjdWxhdGVCYXNlNjRFbmNvZGVkU2l6
ZShpbnB1dC5zaXplKCksIHBvbGljeSk7CiAgICAgaWYgKCFkZXN0aW5hdGlvbkxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBkZXN0aW5hdGlvblZlY3Rv
cihkZXN0aW5hdGlvbkxlbmd0aCk7Ci0gICAgYmFzZTY0RW5jb2RlSW50ZXJuYWwoaW5wdXREYXRh
QnVmZmVyLCBpbnB1dExlbmd0aCwgZGVzdGluYXRpb25WZWN0b3IuZGF0YSgpLCBkZXN0aW5hdGlv
bkxlbmd0aCwgcG9saWN5LCBtYXApOworICAgIGJhc2U2NEVuY29kZUludGVybmFsKGlucHV0LCBT
cGFuIHsgZGVzdGluYXRpb25WZWN0b3IgfSwgcG9saWN5LCBtYXApOwogICAgIHJldHVybiBkZXN0
aW5hdGlvblZlY3RvcjsKIH0KIAotdm9pZCBiYXNlNjRFbmNvZGUoY29uc3Qgdm9pZCogaW5wdXRE
YXRhQnVmZmVyLCB1bnNpZ25lZCBpbnB1dExlbmd0aCwgVUNoYXIqIGRlc3RpbmF0aW9uRGF0YUJ1
ZmZlciwgdW5zaWduZWQgZGVzdGluYXRpb25MZW5ndGgsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xp
Y3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCit2b2lkIGJhc2U2NEVuY29kZShTcGFuPGNvbnN0IHN0
ZDo6Ynl0ZT4gaW5wdXQsIFNwYW48VUNoYXI+IGRlc3RpbmF0aW9uLCBCYXNlNjRFbmNvZGVQb2xp
Y3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewotICAgIGlmICghZGVzdGluYXRpb25M
ZW5ndGgpCisgICAgaWYgKCFkZXN0aW5hdGlvbi5zaXplKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBiYXNlNjRFbmNvZGVJbnRlcm5hbChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXRE
YXRhQnVmZmVyKSwgaW5wdXRMZW5ndGgsIGRlc3RpbmF0aW9uRGF0YUJ1ZmZlciwgZGVzdGluYXRp
b25MZW5ndGgsIHBvbGljeSwgbWFwKTsKKyAgICBiYXNlNjRFbmNvZGVJbnRlcm5hbChpbnB1dCwg
ZGVzdGluYXRpb24sIHBvbGljeSwgbWFwKTsKIH0KIAotdm9pZCBiYXNlNjRFbmNvZGUoY29uc3Qg
dm9pZCogaW5wdXREYXRhQnVmZmVyLCB1bnNpZ25lZCBpbnB1dExlbmd0aCwgTENoYXIqIGRlc3Rp
bmF0aW9uRGF0YUJ1ZmZlciwgdW5zaWduZWQgZGVzdGluYXRpb25MZW5ndGgsIEJhc2U2NEVuY29k
ZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCit2b2lkIGJhc2U2NEVuY29kZShT
cGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gaW5wdXQsIFNwYW48TENoYXI+IGRlc3RpbmF0aW9uLCBCYXNl
NjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewotICAgIGlmICgh
ZGVzdGluYXRpb25MZW5ndGgpCisgICAgaWYgKCFkZXN0aW5hdGlvbi5zaXplKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBiYXNlNjRFbmNvZGVJbnRlcm5hbChzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oaW5wdXREYXRhQnVmZmVyKSwgaW5wdXRMZW5ndGgsIGRlc3RpbmF0aW9uRGF0YUJ1ZmZl
ciwgZGVzdGluYXRpb25MZW5ndGgsIHBvbGljeSwgbWFwKTsKKyAgICBiYXNlNjRFbmNvZGVJbnRl
cm5hbChpbnB1dCwgZGVzdGluYXRpb24sIHBvbGljeSwgbWFwKTsKIH0KIAotVmVjdG9yPHVpbnQ4
X3Q+IGJhc2U2NEVuY29kZVRvVmVjdG9yKGNvbnN0IHZvaWQqIGlucHV0RGF0YUJ1ZmZlciwgdW5z
aWduZWQgaW5wdXRMZW5ndGgsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29k
ZU1hcCBtYXApCitWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoU3Bhbjxjb25z
dCBzdGQ6OmJ5dGU+IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNv
ZGVNYXAgbWFwKQogewotICAgIHJldHVybiBiYXNlNjRFbmNvZGVJbnRlcm5hbChzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oaW5wdXREYXRhQnVmZmVyKSwgaW5wdXRMZW5ndGgsIHBvbGljeSwg
bWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlSW50ZXJuYWwoaW5wdXQsIHBvbGljeSwgbWFw
KTsKIH0KIAotU3RyaW5nIGJhc2U2NEVuY29kZVRvU3RyaW5nKGNvbnN0IHZvaWQqIGlucHV0RGF0
YUJ1ZmZlciwgdW5zaWduZWQgaW5wdXRMZW5ndGgsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ks
IEJhc2U2NEVuY29kZU1hcCBtYXApCitTdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoU3Bhbjxj
b25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRF
bmNvZGVNYXAgbWFwKQogewotICAgIHJldHVybiBtYWtlU3RyaW5nKGJhc2U2NEVuY29kZWQoaW5w
dXREYXRhQnVmZmVyLCBpbnB1dExlbmd0aCwgcG9saWN5LCBtYXApKTsKKyAgICByZXR1cm4gbWFr
ZVN0cmluZyhiYXNlNjRFbmNvZGVkKGlucHV0LCBwb2xpY3ksIG1hcCkpOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2
NERlY29kZUludGVybmFsKGNvbnN0IFQqIGlucHV0RGF0YUJ1ZmZlciwgdW5zaWduZWQgaW5wdXRM
ZW5ndGgsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNlNjREZWNv
ZGVNYXAgbWFwKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGVJbnRlcm5hbChTcGFuPGNvbnN0IFQ+IGlucHV0RGF0
YUJ1ZmZlciwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERl
Y29kZU1hcCBtYXApCiB7Ci0gICAgaWYgKCFpbnB1dExlbmd0aCkKKyAgICBpZiAoIWlucHV0RGF0
YUJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBWZWN0b3I8dWludDhfdD4geyB9OwogCiAg
ICAgYXV0byBkZWNvZGVNYXAgPSAobWFwID09IEJhc2U2NERlY29kZU1hcDo6VVJMKSA/IGJhc2U2
NFVSTERlY01hcCA6IGJhc2U2NERlY01hcDsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBkZXN0aW5h
dGlvbihpbnB1dExlbmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRlc3RpbmF0aW9uKGlucHV0
RGF0YUJ1ZmZlci5zaXplKCkpOwogCiAgICAgdW5zaWduZWQgZXF1YWxzU2lnbkNvdW50ID0gMDsK
ICAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbkxlbmd0aCA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ZHggPSAwOyBpZHggPCBpbnB1dExlbmd0aDsgKytpZHgpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGlk
eCA9IDA7IGlkeCA8IGlucHV0RGF0YUJ1ZmZlci5zaXplKCk7ICsraWR4KSB7CiAgICAgICAgIHVu
c2lnbmVkIGNoID0gaW5wdXREYXRhQnVmZmVyW2lkeF07CiAgICAgICAgIGlmIChjaCA9PSAnPScp
IHsKICAgICAgICAgICAgICsrZXF1YWxzU2lnbkNvdW50OwpAQCAtMjU0LDg0ICsyNTksMTkgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHN0ZDo6b3B0aW9uYQogICAgIHJldHVybiBkZXN0
aW5hdGlvbjsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29k
ZShjb25zdCBTdHJpbmcmIGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0
aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1
dC5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCB8fCBpbnB1dC5pczhCaXQoKSkKLSAgICAgICAg
cmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGlucHV0LmNoYXJhY3RlcnM4KCksIGxlbmd0aCwg
b3B0aW9ucywgbWFwKTsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW5wdXQuY2hh
cmFjdGVyczE2KCksIGxlbmd0aCwgb3B0aW9ucywgbWFwKTsKLX0KLQotc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShTdHJpbmdWaWV3IGlucHV0LCBPcHRpb25TZXQ8
QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKLXsKLSAg
ICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCB8fCBp
bnB1dC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGlucHV0
LmNoYXJhY3RlcnM4KCksIGxlbmd0aCwgb3B0aW9ucywgbWFwKTsKLSAgICByZXR1cm4gYmFzZTY0
RGVjb2RlSW50ZXJuYWwoaW5wdXQuY2hhcmFjdGVyczE2KCksIGxlbmd0aCwgb3B0aW9ucywgbWFw
KTsKLX0KLQotc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4g
b3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKLXsKLSAgICBpZiAoaW5wdXQuc2l6ZSgpID4g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5kYXRhKCks
IGlucHV0LnNpemUoKSwgb3B0aW9ucywgbWFwKTsKLX0KLQotc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGlucHV0LCBPcHRpb25T
ZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKK3N0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3Bhbjxjb25zdCBzdGQ6
OmJ5dGU+IGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFz
ZTY0RGVjb2RlTWFwIG1hcCkKIHsKICAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihpbnB1dC5kYXRhKCkpLCBpbnB1dC5zaXplKCksIG9wdGlvbnMsIG1hcCk7Ci19Ci0K
LXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4g
b3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKLXsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2Rl
SW50ZXJuYWwoZGF0YSwgbGVuZ3RoLCBvcHRpb25zLCBtYXApOworICAgIHJldHVybiBiYXNlNjRE
ZWNvZGVJbnRlcm5hbChTcGFuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5w
dXQuZGF0YSgpKSwgaW5wdXQuc2l6ZSgpIH0sIG9wdGlvbnMsIG1hcCk7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFz
ZTY0RGVjb2RlTWFwIG1hcCkKLXsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGRhdGEpLCBsZW5ndGgsIG9wdGlvbnMsIG1hcCk7
Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29u
c3QgU3RyaW5nJiBpbnB1dCkKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBpbnB1dC5sZW5ndGgo
KTsKLSAgICBpZiAoIWxlbmd0aCB8fCBpbnB1dC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGJh
c2U2NERlY29kZUludGVybmFsKGlucHV0LmNoYXJhY3RlcnM4KCksIGxlbmd0aCwgeyB9LCBCYXNl
NjREZWNvZGVNYXA6OlVSTCk7Ci0gICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGlucHV0
LmNoYXJhY3RlcnMxNigpLCBsZW5ndGgsIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOwotfQot
Ci1zdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFN0cmluZ1Zp
ZXcgaW5wdXQpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKFN0
cmluZ1ZpZXcgaW5wdXQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiBvcHRpb25zLCBC
YXNlNjREZWNvZGVNYXAgbWFwKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlucHV0Lmxlbmd0
aCgpOwogICAgIGlmICghbGVuZ3RoIHx8IGlucHV0LmlzOEJpdCgpKQotICAgICAgICByZXR1cm4g
YmFzZTY0RGVjb2RlSW50ZXJuYWwoaW5wdXQuY2hhcmFjdGVyczgoKSwgbGVuZ3RoLCB7IH0sIEJh
c2U2NERlY29kZU1hcDo6VVJMKTsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW5w
dXQuY2hhcmFjdGVyczE2KCksIGxlbmd0aCwgeyB9LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7Ci19
Ci0KLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCkKLXsKLSAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5kYXRhKCksIGlucHV0
LnNpemUoKSwgeyB9LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbnB1
dCkKLXsKLSAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBiYXNl
NjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5k
YXRhKCkpLCBpbnB1dC5zaXplKCksIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOwotfQotCi1z
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50
ZXJuYWwoZGF0YSwgbGVuZ3RoLCB7IH0sIEJhc2U2NERlY29kZU1hcDo6VVJMKTsKLX0KLQotc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFs
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgsIHsgfSwgQmFz
ZTY0RGVjb2RlTWFwOjpVUkwpOworICAgICAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwo
U3BhbiB7IGlucHV0LmNoYXJhY3RlcnM4KCksIGxlbmd0aCB9LCBvcHRpb25zLCBtYXApOworICAg
IHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChTcGFuIHsgaW5wdXQuY2hhcmFjdGVyczE2KCks
IGxlbmd0aCB9LCBvcHRpb25zLCBtYXApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvdGV4dC9CYXNlNjQuaAkocmV2aXNpb24gMjc5MDQ5KQorKysgU291cmNlL1dURi93dGYvdGV4
dC9CYXNlNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01MCwxMDMgKzUxLDE4MiBAQCBlbnVtIGNs
YXNzIEJhc2U2NERlY29kZU9wdGlvbnMgOiB1aW50OF90CiAKIGVudW0gY2xhc3MgQmFzZTY0RGVj
b2RlTWFwIHsgRGVmYXVsdCwgVVJMIH07CiAKK3N0cnVjdCBCYXNlNjRTcGVjaWZpY2F0aW9uIHsK
KyAgICBTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4gaW5wdXQ7CisgICAgQmFzZTY0RW5jb2RlUG9saWN5
IHBvbGljeTsKKyAgICBCYXNlNjRFbmNvZGVNYXAgbWFwOworfTsKKwogc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBtYXhpbXVtQmFzZTY0TGluZUxlbmd0aFdoZW5JbnNlcnRpbmdMRnMgPSA3NjsK
IAogLy8gSWYgdGhlIGlucHV0IHN0cmluZyBpcyBwYXRob2xvZ2ljYWxseSBsYXJnZSwganVzdCBy
ZXR1cm4gbm90aGluZy4KIC8vIFJhdGhlciB0aGFuIGJlaW5nIHBlcmZlY3RseSBwcmVjaXNlLCB0
aGlzIGlzIGEgYml0IGNvbnNlcnZhdGl2ZS4KIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWF4
aW11bUJhc2U2NEVuY29kZXJJbnB1dEJ1ZmZlclNpemUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkgLyA3NyAqIDc2IC8gNCAqIDMgLSAyOwogCi1XVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBiYXNlNjRFbmNvZGUoY29uc3Qgdm9pZCosIHVuc2lnbmVkLCBVQ2hhciosIHVuc2ln
bmVkLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0
TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOwotV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IHZvaWQqLCB1bnNpZ25lZCwgTENo
YXIqLCB1bnNpZ25lZCwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpE
b05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0
KTsKK3Vuc2lnbmVkIGNhbGN1bGF0ZUJhc2U2NEVuY29kZWRTaXplKHVuc2lnbmVkIGlucHV0TGVu
Z3RoLCBCYXNlNjRFbmNvZGVQb2xpY3kpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPHVp
bnQ4X3Q+IGJhc2U2NEVuY29kZVRvVmVjdG9yKGNvbnN0IHZvaWQqLCB1bnNpZ25lZCwgQmFzZTY0
RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0
RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKLVZlY3Rvcjx1aW50OF90PiBi
YXNlNjRFbmNvZGVUb1ZlY3Rvcihjb25zdCBWZWN0b3I8dWludDhfdD4mLCBCYXNlNjRFbmNvZGVQ
b2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVN
YXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOwotVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVu
Y29kZVRvVmVjdG9yKGNvbnN0IFZlY3RvcjxjaGFyPiYsIEJhc2U2NEVuY29kZVBvbGljeSA9IEJh
c2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2
NEVuY29kZU1hcDo6RGVmYXVsdCk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBi
b29sIGlzQmFzZTY0T3JCYXNlNjRVUkxDaGFyYWN0ZXIoQ2hhcmFjdGVyVHlwZSk7CisKK1dURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGJhc2U2NEVuY29kZShTcGFuPGNvbnN0IHN0ZDo6Ynl0ZT4sIFNw
YW48VUNoYXI+LCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90
SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOwor
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYmFzZTY0RW5jb2RlKFNwYW48Y29uc3Qgc3RkOjpieXRl
PiwgU3BhbjxMQ2hhcj4sIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6
RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVs
dCk7CisKK1dURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9W
ZWN0b3IoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+LCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRF
bmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNv
ZGVNYXA6OkRlZmF1bHQpOworVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVuY29kZVRvVmVjdG9yKFNw
YW48Y29uc3QgdWludDhfdD4sIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGlj
eTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVm
YXVsdCk7CitWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoU3Bhbjxjb25zdCBj
aGFyPiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2Vy
dExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKIFZlY3Rv
cjx1aW50OF90PiBiYXNlNjRFbmNvZGVUb1ZlY3Rvcihjb25zdCBDU3RyaW5nJiwgQmFzZTY0RW5j
b2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5j
b2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKK1ZlY3Rvcjx1aW50OF90PiBiYXNl
NjRFbmNvZGVUb1ZlY3Rvcihjb25zdCB2b2lkKiwgdW5zaWduZWQsIEJhc2U2NEVuY29kZVBvbGlj
eSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9
IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
YmFzZTY0RW5jb2RlVG9TdHJpbmcoY29uc3Qgdm9pZCosIHVuc2lnbmVkLCBCYXNlNjRFbmNvZGVQ
b2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVN
YXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOwotU3RyaW5nIGJhc2U2NEVuY29kZVRvU3Ry
aW5nKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVu
Y29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29k
ZU1hcDo6RGVmYXVsdCk7Ci1TdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoY29uc3QgVmVjdG9y
PGNoYXI+JiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdElu
c2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKK1dU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCBz
dGQ6OmJ5dGU+LCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90
SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOwor
U3RyaW5nIGJhc2U2NEVuY29kZVRvU3RyaW5nKFNwYW48Y29uc3QgdWludDhfdD4sIEJhc2U2NEVu
Y29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVu
Y29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7CitTdHJpbmcgYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoU3Bhbjxjb25zdCBjaGFyPiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5j
b2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2Rl
TWFwOjpEZWZhdWx0KTsKIFN0cmluZyBiYXNlNjRFbmNvZGVUb1N0cmluZyhjb25zdCBDU3RyaW5n
JiwgQmFzZTY0RW5jb2RlUG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExG
cywgQmFzZTY0RW5jb2RlTWFwID0gQmFzZTY0RW5jb2RlTWFwOjpEZWZhdWx0KTsKK1N0cmluZyBi
YXNlNjRFbmNvZGVUb1N0cmluZyhjb25zdCB2b2lkKiwgdW5zaWduZWQsIEJhc2U2NEVuY29kZVBv
bGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1h
cCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNvbnN0IFN0cmluZyYsIE9w
dGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFz
ZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKFNwYW48Y29uc3Qgc3RkOjpieXRlPiwgT3B0
aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBCYXNlNjREZWNvZGVNYXAgPSBCYXNl
NjREZWNvZGVNYXA6OkRlZmF1bHQpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3RyaW5nVmlldywgT3B0aW9uU2V0PEJhc2U2
NERlY29kZU9wdGlvbnM+ID0geyB9LCBCYXNlNjREZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVNYXA6
OkRlZmF1bHQpOwotV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgT3B0aW9uU2V0PEJhc2U2
NERlY29kZU9wdGlvbnM+ID0geyB9LCBCYXNlNjREZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVNYXA6
OkRlZmF1bHQpOwotV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiwgT3B0aW9uU2V0PEJhc2U2NERl
Y29kZU9wdGlvbnM+ID0geyB9LCBCYXNlNjREZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVNYXA6OkRl
ZmF1bHQpOwotV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBiYXNlNjREZWNvZGUoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBPcHRpb25TZXQ8QmFzZTY0
RGVjb2RlT3B0aW9ucz4gPSB7IH0sIEJhc2U2NERlY29kZU1hcCA9IEJhc2U2NERlY29kZU1hcDo6
RGVmYXVsdCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGJhc2U2NERlY29kZShjb25zdCBjaGFyKiwgdW5zaWduZWQsIE9wdGlvblNldDxCYXNlNjRE
ZWNvZGVPcHRpb25zPiA9IHsgfSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpE
ZWZhdWx0KTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3Bh
bjxjb25zdCB1aW50OF90PiwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+ID0geyB9LCBC
YXNlNjREZWNvZGVNYXAgPSBCYXNlNjREZWNvZGVNYXA6OkRlZmF1bHQpOworc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShTcGFuPGNvbnN0IGNoYXI+LCBPcHRpb25T
ZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gPSB7IH0sIEJhc2U2NERlY29kZU1hcCA9IEJhc2U2NERl
Y29kZU1hcDo6RGVmYXVsdCk7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0
RGVjb2RlKGNvbnN0IFN0cmluZyYsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25zPiA9IHsg
fSwgQmFzZTY0RGVjb2RlTWFwID0gQmFzZTY0RGVjb2RlTWFwOjpEZWZhdWx0KTsKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29uc3Qgdm9pZCosIHVuc2lnbmVk
LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gPSB7IH0sIEJhc2U2NERlY29kZU1hcCA9
IEJhc2U2NERlY29kZU1hcDo6RGVmYXVsdCk7CisKKy8vIEFsbCB0aGUgc2FtZSBmdW5jdGlvbnMg
bW9kaWZpZWQgZm9yIGJhc2U2NHVybCwgYXMgZGVmaW5lZCBpbiBSRkMgNDY0OC4KKy8vIFRoaXMg
Zm9ybWF0IHVzZXMgJy0nIGFuZCAnXycgaW5zdGVhZCBvZiAnKycgYW5kICcvJyByZXNwZWN0aXZl
bHkuCisKK1ZlY3Rvcjx1aW50OF90PiBiYXNlNjRVUkxFbmNvZGVUb1ZlY3RvcihTcGFuPGNvbnN0
IHN0ZDo6Ynl0ZT4pOworVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKFNw
YW48Y29uc3QgdWludDhfdD4pOworVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVj
dG9yKFNwYW48Y29uc3QgY2hhcj4pOworVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRv
VmVjdG9yKGNvbnN0IENTdHJpbmcmKTsKK1ZlY3Rvcjx1aW50OF90PiBiYXNlNjRVUkxFbmNvZGVU
b1ZlY3Rvcihjb25zdCB2b2lkKiwgdW5zaWduZWQpOworCitTdHJpbmcgYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+KTsKK1N0cmluZyBiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKK1N0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0
cmluZyhTcGFuPGNvbnN0IGNoYXI+KTsKK1N0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhj
b25zdCBDU3RyaW5nJik7CitTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoY29uc3Qgdm9p
ZCosIHVuc2lnbmVkKTsKKworc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVS
TERlY29kZShTdHJpbmdWaWV3KTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNl
NjRVUkxEZWNvZGUoY29uc3QgU3RyaW5nJik7CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gYmFzZTY0VVJMRGVjb2RlKFNwYW48Y29uc3Qgc3RkOjpieXRlPik7CitzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFNwYW48Y29uc3QgdWludDhfdD4pOwor
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShTcGFuPGNvbnN0
IGNoYXI+KTsKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUo
Y29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKKworLy8gVmVyc2lvbnMgZm9yIHVzZSB3aXRoIFN0cmlu
Z0J1aWxkZXIgLyBtYWtlU3RyaW5nLgorCitCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NEVuY29k
ZWQoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+LCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjRFbmNv
ZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAgPSBCYXNlNjRFbmNvZGVN
YXA6OkRlZmF1bHQpOworQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRFbmNvZGVkKFNwYW48Y29u
c3QgdWludDhfdD4sIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9O
b3RJbnNlcnRMRnMsIEJhc2U2NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7
CitCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NEVuY29kZWQoY29uc3QgQ1N0cmluZyYsIEJhc2U2
NEVuY29kZVBvbGljeSA9IEJhc2U2NEVuY29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMsIEJhc2U2
NEVuY29kZU1hcCA9IEJhc2U2NEVuY29kZU1hcDo6RGVmYXVsdCk7CitCYXNlNjRTcGVjaWZpY2F0
aW9uIGJhc2U2NEVuY29kZWQoY29uc3Qgdm9pZCosIHVuc2lnbmVkLCBCYXNlNjRFbmNvZGVQb2xp
Y3kgPSBCYXNlNjRFbmNvZGVQb2xpY3k6OkRvTm90SW5zZXJ0TEZzLCBCYXNlNjRFbmNvZGVNYXAg
PSBCYXNlNjRFbmNvZGVNYXA6OkRlZmF1bHQpOwogCi1pbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJh
c2U2NEVuY29kZVRvVmVjdG9yKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5wdXQsIEJhc2U2NEVu
Y29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCitCYXNlNjRTcGVjaWZpY2F0
aW9uIGJhc2U2NFVSTEVuY29kZWQoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+KTsKK0Jhc2U2NFNwZWNp
ZmljYXRpb24gYmFzZTY0VVJMRW5jb2RlZChTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKK0Jhc2U2NFNw
ZWNpZmljYXRpb24gYmFzZTY0VVJMRW5jb2RlZChjb25zdCBDU3RyaW5nJik7CitCYXNlNjRTcGVj
aWZpY2F0aW9uIGJhc2U2NFVSTEVuY29kZWQoY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKKworCitp
bmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NEVuY29kZVRvVmVjdG9yKFNwYW48Y29uc3QgdWlu
dDhfdD4gaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBt
YXApCiB7Ci0gICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvVmVjdG9yKGlucHV0LmRhdGEoKSwgaW5w
dXQuc2l6ZSgpLCBwb2xpY3ksIG1hcCk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvVmVjdG9y
KGFzQnl0ZXMoaW5wdXQpLCBwb2xpY3ksIG1hcCk7CiB9CiAKLWlubGluZSBWZWN0b3I8dWludDhf
dD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoY29uc3QgVmVjdG9yPGNoYXI+JiBpbnB1dCwgQmFzZTY0
RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKK2lubGluZSBWZWN0b3I8
dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoU3Bhbjxjb25zdCBjaGFyPiBpbnB1dCwgQmFz
ZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKIHsKLSAgICByZXR1
cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCksIHBvbGlj
eSwgbWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoYXNCeXRlcyhpbnB1dCks
IHBvbGljeSwgbWFwKTsKIH0KIAogaW5saW5lIFZlY3Rvcjx1aW50OF90PiBiYXNlNjRFbmNvZGVU
b1ZlY3Rvcihjb25zdCBDU3RyaW5nJiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwg
QmFzZTY0RW5jb2RlTWFwIG1hcCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3Io
aW5wdXQuZGF0YSgpLCBpbnB1dC5sZW5ndGgoKSwgcG9saWN5LCBtYXApOworICAgIHJldHVybiBi
YXNlNjRFbmNvZGVUb1ZlY3RvcihpbnB1dC5ieXRlcygpLCBwb2xpY3ksIG1hcCk7Cit9CisKK2lu
bGluZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoY29uc3Qgdm9pZCogaW5w
dXQsIHVuc2lnbmVkIGxlbmd0aCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5j
b2RlTWFwIG1hcCkKK3sKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoeyBzdGF0aWNf
Y2FzdDxjb25zdCBzdGQ6OmJ5dGUqPihpbnB1dCksIGxlbmd0aCB9LCBwb2xpY3ksIG1hcCk7CiB9
CiAKLWlubGluZSBTdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1h
cCkKK2lubGluZSBTdHJpbmcgYmFzZTY0RW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25zdCB1aW50OF90
PiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkK
IHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5wdXQuZGF0YSgpLCBpbnB1dC5z
aXplKCksIHBvbGljeSwgbWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYXNC
eXRlcyhpbnB1dCksIHBvbGljeSwgbWFwKTsKIH0KIAotaW5saW5lIFN0cmluZyBiYXNlNjRFbmNv
ZGVUb1N0cmluZyhjb25zdCBWZWN0b3I8Y2hhcj4mIGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kg
cG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQoraW5saW5lIFN0cmluZyBiYXNlNjRFbmNvZGVU
b1N0cmluZyhTcGFuPGNvbnN0IGNoYXI+IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5
LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewotICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhpbnB1dC5kYXRhKCksIGlucHV0LnNpemUoKSwgcG9saWN5LCBtYXApOworICAgIHJldHVybiBi
YXNlNjRFbmNvZGVUb1N0cmluZyhhc0J5dGVzKGlucHV0KSwgcG9saWN5LCBtYXApOwogfQogCiBp
bmxpbmUgU3RyaW5nIGJhc2U2NEVuY29kZVRvU3RyaW5nKGNvbnN0IENTdHJpbmcmIGlucHV0LCBC
YXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewotICAgIHJl
dHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbnB1dC5kYXRhKCksIGlucHV0Lmxlbmd0aCgpLCBw
b2xpY3ksIG1hcCk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvU3RyaW5nKGlucHV0LmJ5dGVz
KCksIHBvbGljeSwgbWFwKTsKIH0KIAoraW5saW5lIFN0cmluZyBiYXNlNjRFbmNvZGVUb1N0cmlu
Zyhjb25zdCB2b2lkKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3RoLCBCYXNlNjRFbmNvZGVQb2xpY3kg
cG9saWN5LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQoreworICAgIHJldHVybiBiYXNlNjRFbmNvZGVU
b1N0cmluZyh7IHN0YXRpY19jYXN0PGNvbnN0IHN0ZDo6Ynl0ZSo+KGlucHV0KSwgbGVuZ3RoIH0s
IHBvbGljeSwgbWFwKTsKK30KIAotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8v
IEFsbCB0aGUgc2FtZSBmdW5jdGlvbnMgbW9kaWZpZWQgZm9yIGJhc2U2NHVybCwgYXMgZGVmaW5l
ZCBpbiBSRkMgNDY0OC4KLS8vIFRoaXMgZm9ybWF0IHVzZXMgJy0nIGFuZCAnXycgaW5zdGVhZCBv
ZiAnKycgYW5kICcvJyByZXNwZWN0aXZlbHkuCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUo
U3Bhbjxjb25zdCB1aW50OF90PiBpbnB1dCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+
IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCit7CisgICAgcmV0dXJuIGJhc2U2NERlY29k
ZShhc0J5dGVzKGlucHV0KSwgb3B0aW9ucywgbWFwKTsKK30KIAotVmVjdG9yPHVpbnQ4X3Q+IGJh
c2U2NFVSTEVuY29kZVRvVmVjdG9yKGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7Ci1WZWN0b3I8dWlu
dDhfdD4gYmFzZTY0VVJMRW5jb2RlVG9WZWN0b3IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1W
ZWN0b3I8dWludDhfdD4gYmFzZTY0VVJMRW5jb2RlVG9WZWN0b3IoY29uc3QgVmVjdG9yPGNoYXI+
Jik7Ci1WZWN0b3I8dWludDhfdD4gYmFzZTY0VVJMRW5jb2RlVG9WZWN0b3IoY29uc3QgQ1N0cmlu
ZyYpOworaW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUo
U3Bhbjxjb25zdCBjaGFyPiBpbnB1dCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9w
dGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCit7CisgICAgcmV0dXJuIGJhc2U2NERlY29kZShh
c0J5dGVzKGlucHV0KSwgb3B0aW9ucywgbWFwKTsKK30KIAotU3RyaW5nIGJhc2U2NFVSTEVuY29k
ZVRvU3RyaW5nKGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7Ci1TdHJpbmcgYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1TdHJpbmcgYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoY29uc3QgVmVjdG9yPGNoYXI+Jik7Ci1TdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9T
dHJpbmcoY29uc3QgQ1N0cmluZyYpOworaW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBiYXNlNjREZWNvZGUoY29uc3QgU3RyaW5nJiBpbnB1dCwgT3B0aW9uU2V0PEJhc2U2NERl
Y29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCit7CisgICAgcmV0dXJu
IGJhc2U2NERlY29kZShTdHJpbmdWaWV3IHsgaW5wdXQgfSwgb3B0aW9ucywgbWFwKTsKK30KIAot
V1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRV
UkxEZWNvZGUoY29uc3QgU3RyaW5nJik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShTdHJpbmdWaWV3KTsKLVdURl9FWFBP
UlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2Rl
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwotV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+Jik7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2
NFVSTERlY29kZShjb25zdCB1aW50OF90KiwgdW5zaWduZWQpOwotV1RGX0VYUE9SVF9QUklWQVRF
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3QgY2hh
ciosIHVuc2lnbmVkKTsKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFz
ZTY0RGVjb2RlKGNvbnN0IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgsIE9wdGlvblNldDxC
YXNlNjREZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNlNjREZWNvZGVNYXAgbWFwKQoreworICAg
IHJldHVybiBiYXNlNjREZWNvZGUoeyBzdGF0aWNfY2FzdDxjb25zdCBzdGQ6OmJ5dGUqPihpbnB1
dCksIGxlbmd0aCB9LCBvcHRpb25zLCBtYXApOworfQorCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+
IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKFNwYW48Y29uc3Qgc3RkOjpieXRlPiBpbnB1dCkKK3sK
KyAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoaW5wdXQsIEJhc2U2NEVuY29kZVBvbGlj
eTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7Cit9CisKK2lubGluZSBWZWN0b3I8dWludDhf
dD4gYmFzZTY0VVJMRW5jb2RlVG9WZWN0b3IoU3Bhbjxjb25zdCB1aW50OF90PiBpbnB1dCkKK3sK
KyAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoaW5wdXQsIEJhc2U2NEVuY29kZVBvbGlj
eTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7Cit9CisKK2lubGluZSBWZWN0b3I8dWludDhf
dD4gYmFzZTY0VVJMRW5jb2RlVG9WZWN0b3IoU3Bhbjxjb25zdCBjaGFyPiBpbnB1dCkKK3sKKyAg
ICByZXR1cm4gYmFzZTY0RW5jb2RlVG9WZWN0b3IoaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeTo6
VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7Cit9CisKK2lubGluZSBWZWN0b3I8dWludDhfdD4g
YmFzZTY0VVJMRW5jb2RlVG9WZWN0b3IoY29uc3QgQ1N0cmluZyYgaW5wdXQpCit7CisgICAgcmV0
dXJuIGJhc2U2NEVuY29kZVRvVmVjdG9yKGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwg
QmFzZTY0RW5jb2RlTWFwOjpVUkwpOworfQogCiBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2
NFVSTEVuY29kZVRvVmVjdG9yKGNvbnN0IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgpCiB7
CiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvVmVjdG9yKGlucHV0LCBsZW5ndGgsIEJhc2U2NEVu
Y29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CiB9CiAKLWlubGluZSBWZWN0
b3I8dWludDhfdD4gYmFzZTY0VVJMRW5jb2RlVG9WZWN0b3IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBpbnB1dCkKK2lubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoU3Bhbjxjb25z
dCBzdGQ6OmJ5dGU+IGlucHV0KQogewotICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1ZlY3Rvcihp
bnB1dC5kYXRhKCksIGlucHV0LnNpemUoKSwgQmFzZTY0RW5jb2RlUG9saWN5OjpVUkwsIEJhc2U2
NEVuY29kZU1hcDo6VVJMKTsKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5wdXQs
IEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CiB9CiAKLWlu
bGluZSBWZWN0b3I8dWludDhfdD4gYmFzZTY0VVJMRW5jb2RlVG9WZWN0b3IoY29uc3QgVmVjdG9y
PGNoYXI+JiBpbnB1dCkKK2lubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoU3Bh
bjxjb25zdCB1aW50OF90PiBpbnB1dCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9WZWN0
b3IoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCksIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBC
YXNlNjRFbmNvZGVNYXA6OlVSTCk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvU3RyaW5nKGlu
cHV0LCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOwogfQog
Ci1pbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGJhc2U2NFVSTEVuY29kZVRvVmVjdG9yKGNvbnN0IENT
dHJpbmcmIGlucHV0KQoraW5saW5lIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhTcGFu
PGNvbnN0IGNoYXI+IGlucHV0KQogewotICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1ZlY3Rvcihp
bnB1dC5kYXRhKCksIGlucHV0Lmxlbmd0aCgpLCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFz
ZTY0RW5jb2RlTWFwOjpVUkwpOworICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbnB1
dCwgQmFzZTY0RW5jb2RlUG9saWN5OjpVUkwsIEJhc2U2NEVuY29kZU1hcDo6VVJMKTsKK30KKwor
aW5saW5lIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhjb25zdCBDU3RyaW5nJiBpbnB1
dCkKK3sKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5wdXQsIEJhc2U2NEVuY29k
ZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CiB9CiAKIGlubGluZSBTdHJpbmcg
YmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoY29uc3Qgdm9pZCogaW5wdXQsIHVuc2lnbmVkIGxlbmd0
aCkKQEAgLTE1NCwyMiArMjM0LDM3IEBAIGlubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlVG9T
dHJpbmcoY28KICAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5wdXQsIGxlbmd0aCwg
QmFzZTY0RW5jb2RlUG9saWN5OjpVUkwsIEJhc2U2NEVuY29kZU1hcDo6VVJMKTsKIH0KIAotaW5s
aW5lIFN0cmluZyBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhjb25zdCBWZWN0b3I8dWludDhfdD4m
IGlucHV0KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxE
ZWNvZGUoU3RyaW5nVmlldyBpbnB1dCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCksIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBC
YXNlNjRFbmNvZGVNYXA6OlVSTCk7CisgICAgcmV0dXJuIGJhc2U2NERlY29kZShpbnB1dCwgeyB9
LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7CiB9CiAKLWlubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5j
b2RlVG9TdHJpbmcoY29uc3QgVmVjdG9yPGNoYXI+JiBpbnB1dCkKK2lubGluZSBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQp
CiB7Ci0gICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvU3RyaW5nKGlucHV0LmRhdGEoKSwgaW5wdXQu
c2l6ZSgpLCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOwor
ICAgIHJldHVybiBiYXNlNjREZWNvZGUoaW5wdXQsIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwp
OwogfQogCi1pbmxpbmUgU3RyaW5nIGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGNvbnN0IENTdHJp
bmcmIGlucHV0KQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRV
UkxEZWNvZGUoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0KQoreworICAgIHJldHVybiBiYXNl
NjREZWNvZGUoaW5wdXQsIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOworfQorCitpbmxpbmUg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShTcGFuPGNvbnN0
IHVpbnQ4X3Q+IGlucHV0KQoreworICAgIHJldHVybiBiYXNlNjREZWNvZGUoaW5wdXQsIHsgfSwg
QmFzZTY0RGVjb2RlTWFwOjpVUkwpOworfQorCitpbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShTcGFuPGNvbnN0IGNoYXI+IGlucHV0KQoreworICAg
IHJldHVybiBiYXNlNjREZWNvZGUoaW5wdXQsIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOwor
fQorCitpbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29k
ZShjb25zdCB2b2lkKiBpbnB1dCwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIHJldHVybiBiYXNl
NjRFbmNvZGVUb1N0cmluZyhpbnB1dC5kYXRhKCksIGlucHV0Lmxlbmd0aCgpLCBCYXNlNjRFbmNv
ZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOworICAgIHJldHVybiBiYXNlNjRE
ZWNvZGUoaW5wdXQsIGxlbmd0aCwgeyB9LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Jhc2U2
NE9yQmFzZTY0VVJMQ2hhcmFjdGVyKENoYXJhY3RlclR5cGUgYykKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGJvb2wgaXNCYXNlNjRPckJhc2U2NFVSTENoYXJhY3RlcihDaGFyYWN0
ZXJUeXBlIGMpCiB7CiAgICAgcmV0dXJuIGlzQVNDSUlBbHBoYW51bWVyaWMoYykgfHwgYyA9PSAn
KycgfHwgYyA9PSAnLycgfHwgYyA9PSAnLScgfHwgYyA9PSAnXyc7CiB9CkBAIC0yMDcsNTggKzMw
Miw1MSBAQCBpbmxpbmUgdW5zaWduZWQgY2FsY3VsYXRlQmFzZTY0RW5jb2RlZFNpCiAgICAgcmV0
dXJuIDA7CiB9CiAKLXN0cnVjdCBCYXNlNjRTcGVjaWZpY2F0aW9uIHsKLSAgICBjb25zdCB2b2lk
KiBpbnB1dERhdGE7Ci0gICAgdW5zaWduZWQgaW5wdXRMZW5ndGg7Ci0gICAgQmFzZTY0RW5jb2Rl
UG9saWN5IHBvbGljeTsKLSAgICBCYXNlNjRFbmNvZGVNYXAgbWFwOwotfTsKLQotaW5saW5lIEJh
c2U2NFNwZWNpZmljYXRpb24gYmFzZTY0RW5jb2RlZChjb25zdCB2b2lkKiBpbnB1dERhdGEsIHVu
c2lnbmVkIGlucHV0TGVuZ3RoLCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5ID0gQmFzZTY0RW5j
b2RlUG9saWN5OjpEb05vdEluc2VydExGcywgQmFzZTY0RW5jb2RlTWFwIG1hcCA9IEJhc2U2NEVu
Y29kZU1hcDo6RGVmYXVsdCkKK2lubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NEVuY29k
ZWQoU3Bhbjxjb25zdCBzdGQ6OmJ5dGU+IGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5
LCBCYXNlNjRFbmNvZGVNYXAgbWFwKQogewotICAgIHJldHVybiB7IGlucHV0RGF0YSwgaW5wdXRM
ZW5ndGgsIHBvbGljeSwgbWFwIH07CisgICAgcmV0dXJuIHsgaW5wdXQsIHBvbGljeSwgbWFwIH07
CiB9CiAKLWlubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NEVuY29kZWQoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBpbnB1dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSA9IEJhc2U2NEVu
Y29kZVBvbGljeTo6RG9Ob3RJbnNlcnRMRnMpCitpbmxpbmUgQmFzZTY0U3BlY2lmaWNhdGlvbiBi
YXNlNjRFbmNvZGVkKFNwYW48Y29uc3QgdWludDhfdD4gaW5wdXQsIEJhc2U2NEVuY29kZVBvbGlj
eSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBtYXApCiB7Ci0gICAgcmV0dXJuIGJhc2U2NEVuY29k
ZWQoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCksIHBvbGljeSk7CisgICAgcmV0dXJuIGJhc2U2
NEVuY29kZWQoYXNCeXRlcyhpbnB1dCksIHBvbGljeSwgbWFwKTsKIH0KIAotaW5saW5lIEJhc2U2
NFNwZWNpZmljYXRpb24gYmFzZTY0RW5jb2RlZChjb25zdCBWZWN0b3I8Y2hhcj4mIGlucHV0LCBC
YXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5ID0gQmFzZTY0RW5jb2RlUG9saWN5OjpEb05vdEluc2Vy
dExGcykKK2lubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NEVuY29kZWQoY29uc3QgQ1N0
cmluZyYgaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3ksIEJhc2U2NEVuY29kZU1hcCBt
YXApCiB7Ci0gICAgcmV0dXJuIGJhc2U2NEVuY29kZWQoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXpl
KCksIHBvbGljeSk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZWQoaW5wdXQuYnl0ZXMoKSwgcG9s
aWN5LCBtYXApOwogfQogCi1pbmxpbmUgQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRFbmNvZGVk
KGNvbnN0IENTdHJpbmcmIGlucHV0LCBCYXNlNjRFbmNvZGVQb2xpY3kgcG9saWN5ID0gQmFzZTY0
RW5jb2RlUG9saWN5OjpEb05vdEluc2VydExGcykKK2lubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9u
IGJhc2U2NEVuY29kZWQoY29uc3Qgdm9pZCogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCwgQmFzZTY0
RW5jb2RlUG9saWN5IHBvbGljeSwgQmFzZTY0RW5jb2RlTWFwIG1hcCkKIHsKLSAgICByZXR1cm4g
YmFzZTY0RW5jb2RlZChpbnB1dC5kYXRhKCksIGlucHV0Lmxlbmd0aCgpLCBwb2xpY3kpOworICAg
IHJldHVybiBiYXNlNjRFbmNvZGVkKHsgc3RhdGljX2Nhc3Q8Y29uc3Qgc3RkOjpieXRlKj4oaW5w
dXQpLCBsZW5ndGggfSwgcG9saWN5LCBtYXApOwogfQogCi1pbmxpbmUgQmFzZTY0U3BlY2lmaWNh
dGlvbiBiYXNlNjRVUkxFbmNvZGVkKGNvbnN0IHZvaWQqIGlucHV0RGF0YSwgdW5zaWduZWQgaW5w
dXRMZW5ndGgpCitpbmxpbmUgQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRVUkxFbmNvZGVkKFNw
YW48Y29uc3Qgc3RkOjpieXRlPiBpbnB1dCkKIHsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlZChp
bnB1dERhdGEsIGlucHV0TGVuZ3RoLCBCYXNlNjRFbmNvZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5j
b2RlTWFwOjpVUkwpOworICAgIHJldHVybiBiYXNlNjRFbmNvZGVkKGlucHV0LCBCYXNlNjRFbmNv
ZGVQb2xpY3k6OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOwogfQogCi1pbmxpbmUgQmFzZTY0
U3BlY2lmaWNhdGlvbiBiYXNlNjRVUkxFbmNvZGVkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5w
dXQpCitpbmxpbmUgQmFzZTY0U3BlY2lmaWNhdGlvbiBiYXNlNjRVUkxFbmNvZGVkKFNwYW48Y29u
c3QgdWludDhfdD4gaW5wdXQpCiB7Ci0gICAgcmV0dXJuIGJhc2U2NEVuY29kZWQoaW5wdXQuZGF0
YSgpLCBpbnB1dC5zaXplKCksIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVN
YXA6OlVSTCk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZWQoaW5wdXQsIEJhc2U2NEVuY29kZVBv
bGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7CiB9CiAKLWlubGluZSBCYXNlNjRTcGVj
aWZpY2F0aW9uIGJhc2U2NFVSTEVuY29kZWQoY29uc3QgVmVjdG9yPGNoYXI+JiBpbnB1dCkKK2lu
bGluZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJhc2U2NFVSTEVuY29kZWQoY29uc3QgQ1N0cmluZyYg
aW5wdXQpCiB7Ci0gICAgcmV0dXJuIGJhc2U2NEVuY29kZWQoaW5wdXQuZGF0YSgpLCBpbnB1dC5z
aXplKCksIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBCYXNlNjRFbmNvZGVNYXA6OlVSTCk7Cisg
ICAgcmV0dXJuIGJhc2U2NEVuY29kZWQoaW5wdXQsIEJhc2U2NEVuY29kZVBvbGljeTo6VVJMLCBC
YXNlNjRFbmNvZGVNYXA6OlVSTCk7CiB9CiAKLWlubGluZSBCYXNlNjRTcGVjaWZpY2F0aW9uIGJh
c2U2NFVSTEVuY29kZWQoY29uc3QgQ1N0cmluZyYgaW5wdXQpCitpbmxpbmUgQmFzZTY0U3BlY2lm
aWNhdGlvbiBiYXNlNjRVUkxFbmNvZGVkKGNvbnN0IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBsZW5n
dGgpCiB7Ci0gICAgcmV0dXJuIGJhc2U2NEVuY29kZWQoaW5wdXQuZGF0YSgpLCBpbnB1dC5sZW5n
dGgoKSwgQmFzZTY0RW5jb2RlUG9saWN5OjpVUkwsIEJhc2U2NEVuY29kZU1hcDo6VVJMKTsKKyAg
ICByZXR1cm4gYmFzZTY0RW5jb2RlZChpbnB1dCwgbGVuZ3RoLCBCYXNlNjRFbmNvZGVQb2xpY3k6
OlVSTCwgQmFzZTY0RW5jb2RlTWFwOjpVUkwpOwogfQogCiB0ZW1wbGF0ZTw+IGNsYXNzIFN0cmlu
Z1R5cGVBZGFwdGVyPEJhc2U2NFNwZWNpZmljYXRpb24+IHsKIHB1YmxpYzoKICAgICBTdHJpbmdU
eXBlQWRhcHRlcihjb25zdCBCYXNlNjRTcGVjaWZpY2F0aW9uJiBiYXNlNjQpCiAgICAgICAgIDog
bV9iYXNlNjQgeyBiYXNlNjQgfQotICAgICAgICAsIG1fZW5jb2RlZExlbmd0aCB7IGNhbGN1bGF0
ZUJhc2U2NEVuY29kZWRTaXplKGJhc2U2NC5pbnB1dExlbmd0aCwgYmFzZTY0LnBvbGljeSkgfQor
ICAgICAgICAsIG1fZW5jb2RlZExlbmd0aCB7IGNhbGN1bGF0ZUJhc2U2NEVuY29kZWRTaXplKGJh
c2U2NC5pbnB1dC5zaXplKCksIGJhc2U2NC5wb2xpY3kpIH0KICAgICB7CiAgICAgfQogCkBAIC0y
NjcsNyArMzU1LDcgQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gdm9pZCB3cml0ZVRvKENoYXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uKSBjb25zdAogICAg
IHsKLSAgICAgICAgYmFzZTY0RW5jb2RlKG1fYmFzZTY0LmlucHV0RGF0YSwgbV9iYXNlNjQuaW5w
dXRMZW5ndGgsIGRlc3RpbmF0aW9uLCBtX2VuY29kZWRMZW5ndGgsIG1fYmFzZTY0LnBvbGljeSwg
bV9iYXNlNjQubWFwKTsKKyAgICAgICAgYmFzZTY0RW5jb2RlKG1fYmFzZTY0LmlucHV0LCBTcGFu
IHsgZGVzdGluYXRpb24sIG1fZW5jb2RlZExlbmd0aCB9LCBtX2Jhc2U2NC5wb2xpY3ksIG1fYmFz
ZTY0Lm1hcCk7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9D
U3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgJKHJl
dmlzaW9uIDI3OTA0OSkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNp
bmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvU3Bhbi5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNzMsNiArNzQsMjAgQEAgcHVi
bGljOgogCiAgICAgY29uc3QgdWludDhfdCogZGF0YUFzVUludDhQdHIoKSBjb25zdCB7IHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpOyB9CiAKKyAgICBTcGFu
PGNvbnN0IHVpbnQ4X3Q+IGJ5dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2J1ZmZl
cikKKyAgICAgICAgICAgIHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+bGVuZ3RoKCkgfTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICB9CisKKyAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJ5dGVzSW5sdWRpbmdOdWxs
VGVybWluYXRvcigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9idWZmZXIpCisgICAgICAg
ICAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2J1ZmZlci0+
ZGF0YSgpKSwgbV9idWZmZXItPmxlbmd0aCgpICsgMSB9OworICAgICAgICByZXR1cm4geyB9Owor
ICAgIH0KKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBjaGFyKiBtdXRhYmxlRGF0YSgpOwogICAg
IHNpemVfdCBsZW5ndGgoKSBjb25zdAogICAgIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>