<?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>123659</bug_id>
          
          <creation_ts>2013-11-02 00:30:37 -0700</creation_ts>
          <short_desc>Implement remaining SHA variations for WebCrypto</short_desc>
          <delta_ts>2013-11-02 11:17:46 -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>WebCore Misc.</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122679</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>946186</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-02 00:30:37 -0700</bug_when>
    <thetext>SHA-224, SHA-256, SHA-384, SHA-512</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946187</commentid>
    <comment_count>1</comment_count>
      <attachid>215800</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-02 00:31:44 -0700</bug_when>
    <thetext>Created attachment 215800
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946261</commentid>
    <comment_count>2</comment_count>
      <attachid>215800</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-02 11:17:44 -0700</bug_when>
    <thetext>Comment on attachment 215800
proposed patch

Clearing flags on attachment: 215800

Committed r158494: &lt;http://trac.webkit.org/changeset/158494&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946262</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-02 11:17:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215800</attachid>
            <date>2013-11-02 00:31:44 -0700</date>
            <delta_ts>2013-11-02 11:17:44 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>SHA.txt</filename>
            <type>text/plain</type>
            <size>64301</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODQ4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDEzLTExLTAyICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZW1haW5p
bmcgU0hBIHZhcmlhdGlvbnMgZm9yIFdlYkNyeXB0bworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGNyeXB0by9zdWJ0bGUvc2hhLTIyNC5odG1s
CisgICAgICAgICAgICAgICBjcnlwdG8vc3VidGxlL3NoYS0yNTYuaHRtbAorICAgICAgICAgICAg
ICAgY3J5cHRvL3N1YnRsZS9zaGEtMzg0Lmh0bWwKKyAgICAgICAgICAgICAgIGNyeXB0by9zdWJ0
bGUvc2hhLTUxMi5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OkNy
eXB0b0FsZ29yaXRobVNIQTIyNCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1T
SEEyMjQ6On5DcnlwdG9BbGdvcml0aG1TSEEyMjQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtU0hBMjI0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtU0hBMjI0OjppZGVudGlmaWVyKToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEEyMjQuaDogQWRkZWQuCisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1TSEEyNTY6OkNyeXB0b0FsZ29yaXRobVNIQTI1Nik6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyNTY6On5DcnlwdG9BbGdvcml0aG1TSEEyNTYpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjppZGVudGlmaWVyKToKKyAgICAgICAgKiBj
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuaDogQWRkZWQuCisgICAgICAg
ICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6OkNyeXB0b0FsZ29yaXRobVNI
QTM4NCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6On5DcnlwdG9B
bGdvcml0aG1TSEEzODQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjppZGVu
dGlmaWVyKToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEz
ODQuaDogQWRkZWQuCisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBNTEyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEE1
MTI6OkNyeXB0b0FsZ29yaXRobVNIQTUxMik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1TSEE1MTI6On5DcnlwdG9BbGdvcml0aG1TSEE1MTIpOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtU0hBNTEyOjppZGVudGlmaWVyKToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuaDogQWRkZWQuCisgICAgICAgICogY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1SZWdpc3RyeU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG1SZWdpc3RyeTo6cGxhdGZvcm1SZWdpc3RlckFsZ29yaXRobXMpOgorICAgICAgICAq
IGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0TWFjLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdCk6CisgICAgICAgICogY3J5
cHRvL21hYy9DcnlwdG9BbGdvcml0aG1TSEEyNTZNYWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobVNIQTM4NE1hYy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9tYWMv
Q3J5cHRvQWxnb3JpdGhtU0hBNTEyTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdCk6CisKIDIwMTMtMTEtMDEgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFdlYkNyeXB0byBBRVMtQ0JD
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNTg0ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU1NzksNiArNTU3OSwxOCBA
QAogCQlFMTg3MDU2MzE2RTU0QTBEMDA1ODVFOTcgLyogTWFpblRocmVhZFRhc2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxODcwNTYyMTZFNTRBMEQw
MDU4NUU5NyAvKiBNYWluVGhyZWFkVGFzay5oICovOyB9OwogCQlFMTg3NzJGMTEyNkUyNjI5MDAz
REQ1ODYgLyogTGFuZ3VhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE4NzcyRjAxMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCAqLzsg
fTsKIAkJRTE5NzI3MTYxODIwNTQ5RTAwNTkyRDUxIC8qIENyeXB0b0tleVR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTcyNzE1MTgyMDU0OUUw
MDU5MkQ1MSAvKiBDcnlwdG9LZXlUeXBlLmggKi87IH07CisJCUUxOUFDM0UyMTgyNERDNjkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjRNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QUMzREUxODI0REM2OTAwMzQ5NDI2IC8qIENy
eXB0b0FsZ29yaXRobVNIQTIyNE1hYy5jcHAgKi87IH07CisJCUUxOUFDM0UzMTgyNERDNjkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTZNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QUMzREYxODI0REM2OTAwMzQ5NDI2IC8qIENy
eXB0b0FsZ29yaXRobVNIQTI1Nk1hYy5jcHAgKi87IH07CisJCUUxOUFDM0U0MTgyNERDNjkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEzODRNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QUMzRTAxODI0REM2OTAwMzQ5NDI2IC8qIENy
eXB0b0FsZ29yaXRobVNIQTM4NE1hYy5jcHAgKi87IH07CisJCUUxOUFDM0U1MTgyNERDNjkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QUMzRTExODI0REM2OTAwMzQ5NDI2IC8qIENy
eXB0b0FsZ29yaXRobVNIQTUxMk1hYy5jcHAgKi87IH07CisJCUUxOUFDM0VFMTgyNERDNzkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QUMzRTYxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0
b0FsZ29yaXRobVNIQTIyNC5jcHAgKi87IH07CisJCUUxOUFDM0VGMTgyNERDNzkwMDM0OTQyNiAv
KiBDcnlwdG9BbGdvcml0aG1TSEEyMjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxOUFDM0U3MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0
aG1TSEEyMjQuaCAqLzsgfTsKKwkJRTE5QUMzRjAxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0Fs
Z29yaXRobVNIQTI1Ni5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMTlBQzNFODE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjU2
LmNwcCAqLzsgfTsKKwkJRTE5QUMzRjExODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRo
bVNIQTI1Ni5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE5QUMzRTkxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTI1Ni5oICovOyB9
OworCQlFMTlBQzNGMjE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOUFDM0VB
MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwICovOyB9OworCQlF
MTlBQzNGMzE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTlBQzNFQjE4MjREQzc5
MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmggKi87IH07CisJCUUxOUFDM0Y0MTgy
NERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QUMzRUMxODI0REM3OTAwMzQ5NDI2
IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAgKi87IH07CisJCUUxOUFDM0Y1MTgyNERDNzkw
MDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOUFDM0VEMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlw
dG9BbGdvcml0aG1TSEE1MTIuaCAqLzsgfTsKIAkJRTE5REEyOUMxODE4OUFERDAwMDg4QkM4IC8q
IENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOURBMjlCMTgxODlBREQwMDA4OEJDOCAvKiBDcnlwdG9B
bGdvcml0aG1IbWFjS2V5UGFyYW1zLmggKi87IH07CiAJCUUxQTE0NzA4MTExMDJCMTUwMEVFQzBG
MyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBMTQ3MDcxMTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5l
ck5vZGVBbGdvcml0aG1zLmggKi87IH07CiAJCUUxQTMxNjJEMTM0QkMzMkQwMDdDOUE0RiAvKiBX
ZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTMxNjJCMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJp
YnV0ZWRTdHJpbmdFeHRyYXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTI1OTQsNiArMTI2MDYsMTggQEAKIAkJRTE4NzA1NjIxNkU1NEEwRDAw
NTg1RTk3IC8qIE1haW5UaHJlYWRUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1haW5UaHJlYWRUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxODc3
MkYwMTI2RTI2MjkwMDNERDU4NiAvKiBMYW5ndWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBMYW5ndWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUxOTcyNzE1MTgyMDU0OUUwMDU5MkQ1MSAvKiBDcnlwdG9LZXlUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0tleVR5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTE5QUMzREUxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRo
bVNIQTIyNE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDcnlw
dG9BbGdvcml0aG1TSEEyMjRNYWMuY3BwOyBwYXRoID0gbWFjL0NyeXB0b0FsZ29yaXRobVNIQTIy
NE1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxOUFDM0RGMTgyNERDNjkw
MDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTZNYWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQ3J5cHRvQWxnb3JpdGhtU0hBMjU2TWFjLmNwcDsgcGF0aCA9
IG1hYy9DcnlwdG9BbGdvcml0aG1TSEEyNTZNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMTlBQzNFMDE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENyeXB0b0FsZ29y
aXRobVNIQTM4NE1hYy5jcHA7IHBhdGggPSBtYWMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0TWFjLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE5QUMzRTExODI0REM2OTAwMzQ5NDI2
IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMk1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBDcnlwdG9BbGdvcml0aG1TSEE1MTJNYWMuY3BwOyBwYXRoID0gbWFjL0Ny
eXB0b0FsZ29yaXRobVNIQTUxMk1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUxOUFDM0U2MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtU0hBMjI0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE5QUMzRTcxODI0REM3OTAwMzQ5
NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTIyNC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDcnlwdG9BbGdvcml0aG1TSEEyMjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTE5QUMzRTgxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTI1Ni5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1T
SEEyNTYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTlBQzNFOTE4MjREQzc5
MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVNIQTI1Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMTlBQzNFQTE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hB
Mzg0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29y
aXRobVNIQTM4NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxOUFDM0VCMTgy
NERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEzODQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtU0hBMzg0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxOUFDM0VDMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0
aG1TSEE1MTIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRv
QWxnb3JpdGhtU0hBNTEyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE5QUMz
RUQxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1TSEE1MTIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE5REEyOUIxODE4OUFERDAwMDg4QkM4IC8qIENyeXB0b0Fs
Z29yaXRobUhtYWNLZXlQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oOyBwYXRoID0gcGFyYW1ldGVycy9DcnlwdG9B
bGdvcml0aG1IbWFjS2V5UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
QTE0NzA3MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUEzMTYyQjEzNEJDMzJEMDA3QzlBNEYgLyog
V2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjAxMzgsNiArMjAxNjIsMTAgQEAKIAkJCQlFMTI1RjgzNzE4MjJGMUVCMDBE
ODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAgKi8sCiAJCQkJRTFCQjg0QUMxODIy
Q0E3NDAwNTI1MDQzIC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5TWFjLmNwcCAqLywKIAkJCQlF
MTI1RjgyRDE4MjJDRkZGMDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMU1hYy5jcHAgKi8s
CisJCQkJRTE5QUMzREUxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTIyNE1h
Yy5jcHAgKi8sCisJCQkJRTE5QUMzREYxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRo
bVNIQTI1Nk1hYy5jcHAgKi8sCisJCQkJRTE5QUMzRTAxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0
b0FsZ29yaXRobVNIQTM4NE1hYy5jcHAgKi8sCisJCQkJRTE5QUMzRTExODI0REM2OTAwMzQ5NDI2
IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMk1hYy5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IG1h
YzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMDE1MSw2ICsyMDE3OSwxNCBAQAog
CQkJCUUxMjVGODMwMTgyMkYxMUIwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1ITUFDLmggKi8s
CiAJCQkJRTEyNUY4MjkxODIyQ0ZFQzAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobVNIQTEuY3Bw
ICovLAogCQkJCUUxMjVGODJBMTgyMkNGRUMwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1TSEEx
LmggKi8sCisJCQkJRTE5QUMzRTYxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNI
QTIyNC5jcHAgKi8sCisJCQkJRTE5QUMzRTcxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29y
aXRobVNIQTIyNC5oICovLAorCQkJCUUxOUFDM0U4MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9B
bGdvcml0aG1TSEEyNTYuY3BwICovLAorCQkJCUUxOUFDM0U5MTgyNERDNzkwMDM0OTQyNiAvKiBD
cnlwdG9BbGdvcml0aG1TSEEyNTYuaCAqLywKKwkJCQlFMTlBQzNFQTE4MjREQzc5MDAzNDk0MjYg
LyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcCAqLywKKwkJCQlFMTlBQzNFQjE4MjREQzc5MDAz
NDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmggKi8sCisJCQkJRTE5QUMzRUMxODI0REM3
OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAgKi8sCisJCQkJRTE5QUMzRUQx
ODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMi5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBhbGdvcml0aG1zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIxNjk0
LDYgKzIxNzMwLDcgQEAKIAkJCQlBQUMwOENGMzE1Rjk0MUZEMDBGMUUxODggLyogQWNjZXNzaWJp
bGl0eVNWR1Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJCMEZCQjlDMUQwMDUxMDI5
MyAvKiBBY2Nlc3NpYmlsaXR5VGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjMyMEZC
QjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFMTlBQzNGMTE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjU2Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTI0MTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzRjBGQkI5QzFEMDA1
MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyOUE4MTIzMTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRhYmxlUm93
LmggaW4gSGVhZGVycyAqLywKQEAgLTIzMDc1LDYgKzIzMTEyLDcgQEAKIAkJCQlBOUQyNDgwOTBE
NzU3RTdEMDBGREY5NTkgLyogSlNET01NaW1lVHlwZUFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MkNDQTlFMzE1RTNGNjJDMDA1M0M3N0YgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUNFNTNFMDBBOEQxODgxMDAyMjk0N0QgLyogSlNET01QYXJz
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxOUFDM0YzMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlw
dG9BbGdvcml0aG1TSEEzODQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCOTEzOTJBMTZBRTRGQzAw
MDFGRTY4MiAvKiBKU0RPTVBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUE5RDI0N0ZGMEQ3NTdF
NjkwMEZERjk1OSAvKiBKU0RPTVBsdWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTlEMjQ4MDEw
RDc1N0U2OTAwRkRGOTU5IC8qIEpTRE9NUGx1Z2luQXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAt
MjMzNDQsNiArMjMzODIsNyBAQAogCQkJCUIyQ0I5MjQ4MEI1QkQ5ODQwMDlCQUE3OCAvKiBKU1NW
R0VsZW1lbnRJbnN0YW5jZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NDJBNzk5MEFFNUM5
NDQwMERGNThERiAvKiBKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJGQTNENjkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHRWxsaXBzZUVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCUUxOUFDM0VGMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdv
cml0aG1TSEEyMjQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTJCMTdEMTREMUMwMDQyMEFB
MSAvKiBSVENTdGF0c1JlcXVlc3RJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjY2Q0Q0RTBD
M0FFQzY1MDBFQjA4RDIgLyogSlNTVkdFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
RkEzRDZCMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0ZFQmxlbmRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTI0NzA4LDYgKzI0NzQ3LDcgQEAKIAkJCQlBN0QyMEY2RDEwN0Y0MzhCMDBBODAz
OTIgLyogV2ViR0xBY3RpdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0M1OUI1NzE3RjRB
QzE1MDAwRkJDQkIgLyogVmlkZW9TdHJlYW1UcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlD
N0I5QzkxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFMTlBQzNGNTE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3RTY2RTIzNDE2RDZFQjZDMDBGN0U3RkYgLyogV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U2NkUyMzQxN0U2RUI2QzAwRjdF
N0ZGIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NkUzRkFFOEYxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI1MzkxLDYgKzI1NDMxLDcgQEAKIAkJCQkzN0MyMzYxMDEwOTdF
RTc3MDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTM3QzIzODIyMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21wbGV4VGV4dENvbnRyb2xsZXJDb3Jl
VGV4dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNkZFMTE1MEU2RTFEQTcwMEJGNjA4OCAvKiBD
b21wb3NpdGVBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE5QUMzRTMxODI0REM2
OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTI1Nk1hYy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5MzMwOUREQzA5OUU2NDkyMDA1NkU1ODEgLyogQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNzlGMkY1QTExMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0
aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwOEUxMkIwMjZGNzAwQzFBMzU5
IC8qIENvbmUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjA3NCw2ICsyNjExNSw3IEBACiAJCQkJ
QTg3MURCMzAwQTE1MEJENjAwQjEyQTY4IC8qIEhUTUxUYWJsZVJvd0VsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTM0NDJDQTAwRDJCMzM2MDAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3ND
b2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFEQjI2MEExNTBCRDYwMEIxMkE2
OCAvKiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTlB
QzNGMDE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxMUVGMkNCMTdGMEZEMzUwMEU0RkExNiAvKiBKU0lEQlZlcnNpb25DaGFu
Z2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlENjY4MTdGQTE2NkZFNkQ3MDBGQTA3QjQg
LyogSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODEzNjlENzA5
NzM3NEY2MDBENzQ0NjMgLyogSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTI2Mzg5LDYgKzI2NDMxLDcgQEAKIAkJCQlDRDMzNkY2NzE3RkEwQUM2MDBERERDRDAgLyog
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzOEU2NUY3
MDlGMDk4NUQwMDhBNDhFQyAvKiBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkM2RDQ0RUMwQzA3RjJFRDAwNzJEMkM5IC8qIEpTSFRNTEVtYmVkRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMTlBQzNFRTE4MjREQzc5MDAzNDk0MjYgLyog
Q3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNkQ0NEJFMEMw
N0VGQjYwMDcyRDJDOSAvKiBKU0hUTUxFbWJlZEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFFMkFBMjYwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEZpZWxkU2V0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUEyODBBMUNEQUI0MDBCNDJCMjUgLyogSlNI
VE1MRm9udEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjQ3OCw2ICsyNjUyMSw3IEBA
CiAJCQkJQ0QyN0Y2RTUxNDU3Njg1QTAwNzgyMDdEIC8qIEpTTWVkaWFDb250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZEMjNBMTI1MTNGNUZBNTkwMEY2NzAwMSAvKiBKU01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTQxODBDRDY4
MjY5MDBGQURBNzUgLyogSlNNZWRpYUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxOUFD
M0Y0MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RBOThEQTMxNjAxNDY0MTAwRkVBM0IxIC8qIEpTTWVkaWFLZXlFcnJvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDREI4NTlGQTE2MEQ0OTQ5MDBFNUIwN0YgLyogSlNNZWRp
YUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTk4RERGMTYwMjZBMzcwMEZFQTNC
MSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY5NDcs
NiArMjY5OTEsNyBAQAogCQkJCUZEQjE3MDA1MTRBMkJBQjIwMEEyQjVEOSAvKiBNdWx0aUNoYW5u
ZWxSZXNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCNDkwQTQ0RUZDNzAwRjk5
MkUwIC8qIE11dGF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzZGMDkwMEUxNDMy
N0I2MTAwNjg1ODQ5IC8qIE11dGF0aW9uT2JzZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RTE5QUMzRTUxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMk1hYy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlENkU1MjhBMzE0OUE5MjZEMDBFRkUxRjMgLyogTXV0YXRpb25P
YnNlcnZlckludGVyZXN0R3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDZFMjc2QUYxNDYz
NzQ1NTAwMUQyODBBIC8qIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzZGMDhGQkMxNDMwRkU4RjAwNjg1ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjczMTQsNiArMjczNTksNyBAQAogCQkJCTk3NkYzNkVBMTQ2
ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNEMEUwRkEwRTk3MkMzNTAwMjY1REVBIC8qIFNlY3VyaXR5T3JpZ2luLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk3NEQyREE0MTQ2QTUzNUQwMEQ1MUY4QiAvKiBTZWN1cml0eVBvbGljeS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlFMTlBQzNFMjE4MjREQzY5MDAzNDk0MjYgLyogQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0TWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3MUY0RkZEMEQyNUU3RjMw
MEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMz
REEyRTBEMDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUU0NEI0QkIzMTQxNjUwRDcwMDJCMUQ4QiAvKiBTZWxlY3RvckNoZWNrZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yNzUwNiw2ICsyNzU1Miw3IEBACiAJCQkJQjIyMjc5QTcwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0N1cnNvckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIy
Mjc5QUQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0RlZnNFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3OUIwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdEZXNjRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlFMTlBQzNGMjE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3Jp
dGhtU0hBMzg0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERTNBODU3MTdGNjAyMDQwMEM1QkUy
MCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCMjIy
NzlCMzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjI4QzZBMjcwRDAwQzQ0ODAwMzM0QUE0IC8qIFNWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI3ODg3LDYgKzI3OTM0LDcgQEAKIAkJCQk1OUMyODA0NTEzOERD
MjQxMDA3OUI3RTIgLyogWE1MRXJyb3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzcyQzQ2
MEM0RUIyQzYwMDgzMjg1RiAvKiBYTUxIdHRwUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzhEMDdDRTE0NUExMDM3MDA5NjkwOEQgLyogWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTE5QUMzRTQxODI0REM2OTAwMzQ5NDI2IC8qIENyeXB0b0Fs
Z29yaXRobVNIQTM4NE1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTM2QTAwQzExMzREQkQy
MDBDQzhENTAgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNERkQ0OEYwRTMwNTI5MDAwOUQxMEFEIC8qIFhNTEh0dHBSZXF1ZXN0
VXBsb2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1NzY2NCAv
KiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTIyNC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1TSEEy
MjQuaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NvbnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVNIQTIyNDo6c19uYW1lID0gInNo
YS0yMjQiOworCitDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OkNyeXB0b0FsZ29yaXRobVNIQTIyNCgp
Cit7Cit9CisKK0NyeXB0b0FsZ29yaXRobVNIQTIyNDo6fkNyeXB0b0FsZ29yaXRobVNIQTIyNCgp
Cit7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRo
bVNIQTIyNDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobT4obmV3IENyeXB0b0FsZ29yaXRobVNIQTIyNCk7Cit9CisKK0NyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjppZGVudGlmaWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gc19pZGVudGlmaWVyOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1VC
VExFX0NSWVBUTykKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3Zu
OmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDcnlwdG9BbGdvcml0
aG1TSEEyMjRfaAorI2RlZmluZSBDcnlwdG9BbGdvcml0aG1TSEEyMjRfaAorCisjaW5jbHVkZSAi
Q3J5cHRvQWxnb3JpdGhtLmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9BbGdvcml0aG1TSEEyMjQgRklOQUwgOiBwdWJs
aWMgQ3J5cHRvQWxnb3JpdGhtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgc19uYW1lOworICAgIHN0YXRpYyBjb25zdCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNf
aWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ7CisKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKCk7CisKKyAgICB2
aXJ0dWFsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IE9WRVJS
SURFOworCisgICAgdmlydHVhbCB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+Jiwgc3RkOjp1bmlxdWVf
cHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOworCitwcml2YXRl
OgorICAgIENyeXB0b0FsZ29yaXRobVNIQTIyNCgpOworICAgIHZpcnR1YWwgfkNyeXB0b0FsZ29y
aXRobVNIQTIyNCgpOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8p
CisjZW5kaWYgLy8gQ3J5cHRvQWxnb3JpdGhtU0hBMjI0X2gKClByb3BlcnR5IGNoYW5nZXMgb246
IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5o
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTI1Ni5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1TSEEy
NTYuaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NvbnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVNIQTI1Njo6c19uYW1lID0gInNo
YS0yNTYiOworCitDcnlwdG9BbGdvcml0aG1TSEEyNTY6OkNyeXB0b0FsZ29yaXRobVNIQTI1Nigp
Cit7Cit9CisKK0NyeXB0b0FsZ29yaXRobVNIQTI1Njo6fkNyeXB0b0FsZ29yaXRobVNIQTI1Nigp
Cit7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRo
bVNIQTI1Njo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobT4obmV3IENyeXB0b0FsZ29yaXRobVNIQTI1Nik7Cit9CisKK0NyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjppZGVudGlmaWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gc19pZGVudGlmaWVyOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1VC
VExFX0NSWVBUTykKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3Zu
OmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjU2LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDcnlwdG9BbGdvcml0
aG1TSEEyNTZfaAorI2RlZmluZSBDcnlwdG9BbGdvcml0aG1TSEEyNTZfaAorCisjaW5jbHVkZSAi
Q3J5cHRvQWxnb3JpdGhtLmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9BbGdvcml0aG1TSEEyNTYgRklOQUwgOiBwdWJs
aWMgQ3J5cHRvQWxnb3JpdGhtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgc19uYW1lOworICAgIHN0YXRpYyBjb25zdCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNf
aWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY7CisKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKCk7CisKKyAgICB2
aXJ0dWFsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IE9WRVJS
SURFOworCisgICAgdmlydHVhbCB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+Jiwgc3RkOjp1bmlxdWVf
cHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOworCitwcml2YXRl
OgorICAgIENyeXB0b0FsZ29yaXRobVNIQTI1NigpOworICAgIHZpcnR1YWwgfkNyeXB0b0FsZ29y
aXRobVNIQTI1NigpOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8p
CisjZW5kaWYgLy8gQ3J5cHRvQWxnb3JpdGhtU0hBMjU2X2gKClByb3BlcnR5IGNoYW5nZXMgb246
IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5o
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTM4NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1TSEEz
ODQuaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NvbnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVNIQTM4NDo6c19uYW1lID0gInNo
YS0zODQiOworCitDcnlwdG9BbGdvcml0aG1TSEEzODQ6OkNyeXB0b0FsZ29yaXRobVNIQTM4NCgp
Cit7Cit9CisKK0NyeXB0b0FsZ29yaXRobVNIQTM4NDo6fkNyeXB0b0FsZ29yaXRobVNIQTM4NCgp
Cit7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRo
bVNIQTM4NDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobT4obmV3IENyeXB0b0FsZ29yaXRobVNIQTM4NCk7Cit9CisKK0NyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjppZGVudGlmaWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gc19pZGVudGlmaWVyOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1VC
VExFX0NSWVBUTykKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3Zu
OmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMzg0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDcnlwdG9BbGdvcml0
aG1TSEEzODRfaAorI2RlZmluZSBDcnlwdG9BbGdvcml0aG1TSEEzODRfaAorCisjaW5jbHVkZSAi
Q3J5cHRvQWxnb3JpdGhtLmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9BbGdvcml0aG1TSEEzODQgRklOQUwgOiBwdWJs
aWMgQ3J5cHRvQWxnb3JpdGhtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgc19uYW1lOworICAgIHN0YXRpYyBjb25zdCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNf
aWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ7CisKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKCk7CisKKyAgICB2
aXJ0dWFsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IE9WRVJS
SURFOworCisgICAgdmlydHVhbCB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+Jiwgc3RkOjp1bmlxdWVf
cHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOworCitwcml2YXRl
OgorICAgIENyeXB0b0FsZ29yaXRobVNIQTM4NCgpOworICAgIHZpcnR1YWwgfkNyeXB0b0FsZ29y
aXRobVNIQTM4NCgpOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8p
CisjZW5kaWYgLy8gQ3J5cHRvQWxnb3JpdGhtU0hBMzg0X2gKClByb3BlcnR5IGNoYW5nZXMgb246
IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5o
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTUxMi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1TSEE1
MTIuaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NvbnN0IGNoYXIqIGNvbnN0IENyeXB0b0FsZ29yaXRobVNIQTUxMjo6c19uYW1lID0gInNo
YS01MTIiOworCitDcnlwdG9BbGdvcml0aG1TSEE1MTI6OkNyeXB0b0FsZ29yaXRobVNIQTUxMigp
Cit7Cit9CisKK0NyeXB0b0FsZ29yaXRobVNIQTUxMjo6fkNyeXB0b0FsZ29yaXRobVNIQTUxMigp
Cit7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+IENyeXB0b0FsZ29yaXRo
bVNIQTUxMjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobT4obmV3IENyeXB0b0FsZ29yaXRobVNIQTUxMik7Cit9CisKK0NyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjppZGVudGlmaWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gc19pZGVudGlmaWVyOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1VC
VExFX0NSWVBUTykKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3Zu
OmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBNTEyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDcnlwdG9BbGdvcml0
aG1TSEE1MTJfaAorI2RlZmluZSBDcnlwdG9BbGdvcml0aG1TSEE1MTJfaAorCisjaW5jbHVkZSAi
Q3J5cHRvQWxnb3JpdGhtLmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9BbGdvcml0aG1TSEE1MTIgRklOQUwgOiBwdWJs
aWMgQ3J5cHRvQWxnb3JpdGhtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgc19uYW1lOworICAgIHN0YXRpYyBjb25zdCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIHNf
aWRlbnRpZmllciA9IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI7CisKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKCk7CisKKyAgICB2
aXJ0dWFsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IE9WRVJS
SURFOworCisgICAgdmlydHVhbCB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzJiwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRhdGE+Jiwgc3RkOjp1bmlxdWVf
cHRyPFByb21pc2VXcmFwcGVyPiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOworCitwcml2YXRl
OgorICAgIENyeXB0b0FsZ29yaXRobVNIQTUxMigpOworICAgIHZpcnR1YWwgfkNyeXB0b0FsZ29y
aXRobVNIQTUxMigpOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8p
CisjZW5kaWYgLy8gQ3J5cHRvQWxnb3JpdGhtU0hBNTEyX2gKClByb3BlcnR5IGNoYW5nZXMgb246
IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5o
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlNYWMuY3BwCShyZXZp
c2lvbiAxNTg0ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5TWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNs
dWRlICJDcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGht
SE1BQy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVNIQTEuaCIKKyNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1TSEEyMjQuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1TSEEyNTYuaCIK
KyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1TSEEzODQuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdv
cml0aG1TSEE1MTIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw2ICs0MywxMCBA
QCB2b2lkIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpwbGF0Zm9ybVJlCiAgICAgcmVnaXN0ZXJB
bGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6c19uYW1lLCBDcnlwdG9BbGdvcml0aG1B
RVNfQ0JDOjpzX2lkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmNyZWF0ZSk7CiAg
ICAgcmVnaXN0ZXJBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSE1BQzo6c19uYW1lLCBDcnlwdG9B
bGdvcml0aG1ITUFDOjpzX2lkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUhNQUM6OmNyZWF0ZSk7
CiAgICAgcmVnaXN0ZXJBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtU0hBMTo6c19uYW1lLCBDcnlw
dG9BbGdvcml0aG1TSEExOjpzX2lkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobVNIQTE6OmNyZWF0
ZSk7CisgICAgcmVnaXN0ZXJBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpzX25hbWUs
IENyeXB0b0FsZ29yaXRobVNIQTIyNDo6c19pZGVudGlmaWVyLCBDcnlwdG9BbGdvcml0aG1TSEEy
MjQ6OmNyZWF0ZSk7CisgICAgcmVnaXN0ZXJBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtU0hBMjU2
OjpzX25hbWUsIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6c19pZGVudGlmaWVyLCBDcnlwdG9BbGdv
cml0aG1TSEEyNTY6OmNyZWF0ZSk7CisgICAgcmVnaXN0ZXJBbGdvcml0aG0oQ3J5cHRvQWxnb3Jp
dGhtU0hBMzg0OjpzX25hbWUsIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6c19pZGVudGlmaWVyLCBD
cnlwdG9BbGdvcml0aG1TSEEzODQ6OmNyZWF0ZSk7CisgICAgcmVnaXN0ZXJBbGdvcml0aG0oQ3J5
cHRvQWxnb3JpdGhtU0hBNTEyOjpzX25hbWUsIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6c19pZGVu
dGlmaWVyLCBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmNyZWF0ZSk7CiB9CiAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0TWFjLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVNIQTIy
NE1hYy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVNIQTIyNE1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0
aG1TSEEyMjQuaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCisjaW5jbHVkZSAiSlNE
T01Qcm9taXNlLmgiCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3Qo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVy
YXRpb25EYXRhPiYgZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNl
LCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gcmVzdWx0KEND
X1NIQTIyNF9ESUdFU1RfTEVOR1RIKTsKKworICAgIENDX1NIQTI1Nl9DVFggY29udGV4dDsgLy8g
U2FtZSBjb250ZXh0IHN0cnVjdCBpcyB1c2VkIGZvciBTSEEyMjQgYW5kIFNIQTI1Ni4KKyAgICBD
Q19TSEEyMjRfSW5pdCgmY29udGV4dCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9
IGRhdGEuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBDQ19TSEEyMjRfVXBkYXRlKCZj
b250ZXh0LCBkYXRhW2ldLmZpcnN0LCBkYXRhW2ldLnNlY29uZCk7CisKKyAgICBDQ19TSEEyMjRf
RmluYWwocmVzdWx0LmRhdGEoKSwgJmNvbnRleHQpOworCisgICAgcHJvbWlzZS0+ZnVsZmlsbChy
ZXN1bHQpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
U0hBMjI0TWFjLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEg
IyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVNIQTI1Nk1hYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1TSEEyNTZNYWMu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1TSEEyNTZNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hB
MjU2LmgiCisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZS5oIgorI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCit2b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBWZWN0b3I8Q3J5cHRvT3BlcmF0aW9u
RGF0YT4mIGRhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlV3JhcHBlcj4gcHJvbWlzZSwgRXhj
ZXB0aW9uQ29kZSYpCit7CisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHJlc3VsdChDQ19TSEEy
NTZfRElHRVNUX0xFTkdUSCk7CisKKyAgICBDQ19TSEEyNTZfQ1RYIGNvbnRleHQ7CisgICAgQ0Nf
U0hBMjU2X0luaXQoJmNvbnRleHQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBk
YXRhLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgQ0NfU0hBMjU2X1VwZGF0ZSgmY29u
dGV4dCwgZGF0YVtpXS5maXJzdCwgZGF0YVtpXS5zZWNvbmQpOworCisgICAgQ0NfU0hBMjU2X0Zp
bmFsKHJlc3VsdC5kYXRhKCksICZjb250ZXh0KTsKKworICAgIHByb21pc2UtPmZ1bGZpbGwocmVz
dWx0KTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVNI
QTI1Nk1hYy5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMj
CituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1TSEEzODRNYWMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0TWFjLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMzg0TWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVNIQTM4
NC5oIgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKKyNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKKyNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgVmVjdG9yPENyeXB0b09wZXJhdGlvbkRh
dGE+JiBkYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvbWlzZVdyYXBwZXI+IHByb21pc2UsIEV4Y2Vw
dGlvbkNvZGUmKQoreworICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiByZXN1bHQoQ0NfU0hBMzg0
X0RJR0VTVF9MRU5HVEgpOworCisgICAgQ0NfU0hBNTEyX0NUWCBjb250ZXh0OyAvLyBTYW1lIGNv
bnRleHQgc3RydWN0IGlzIHVzZWQgZm9yIFNIQTM4NCBhbmQgU0hBNTEyLgorICAgIENDX1NIQTM4
NF9Jbml0KCZjb250ZXh0KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZGF0YS5z
aXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgIENDX1NIQTM4NF9VcGRhdGUoJmNvbnRleHQs
IGRhdGFbaV0uZmlyc3QsIGRhdGFbaV0uc2Vjb25kKTsKKworICAgIENDX1NIQTM4NF9GaW5hbChy
ZXN1bHQuZGF0YSgpLCAmY29udGV4dCk7CisKKyAgICBwcm9taXNlLT5mdWxmaWxsKHJlc3VsdCk7
Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1TSEEzODRN
YWMuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0
aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyTWFjLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVNIQTUxMk1hYy5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVNI
QTUxMk1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1TSEE1MTIuaCIK
KworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgi
CisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IFZlY3RvcjxDcnlwdG9PcGVyYXRpb25EYXRhPiYg
ZGF0YSwgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VXcmFwcGVyPiBwcm9taXNlLCBFeGNlcHRpb25D
b2RlJikKK3sKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gcmVzdWx0KENDX1NIQTUxMl9ESUdF
U1RfTEVOR1RIKTsKKworICAgIENDX1NIQTUxMl9DVFggY29udGV4dDsKKyAgICBDQ19TSEE1MTJf
SW5pdCgmY29udGV4dCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGRhdGEuc2l6
ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBDQ19TSEE1MTJfVXBkYXRlKCZjb250ZXh0LCBk
YXRhW2ldLmZpcnN0LCBkYXRhW2ldLnNlY29uZCk7CisKKyAgICBDQ19TSEE1MTJfRmluYWwocmVz
dWx0LmRhdGEoKSwgJmNvbnRleHQpOworCisgICAgcHJvbWlzZS0+ZnVsZmlsbChyZXN1bHQpOwor
fQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKClByb3BlcnR5IGNoYW5n
ZXMgb246IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyTWFj
LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2
ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTg0
ODUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OSBAQAorMjAxMy0xMS0wMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgcmVtYWluaW5nIFNIQSB2YXJpYXRpb25zIGZvciBXZWJDcnlwdG8K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzY1OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3J5cHRv
L3N1YnRsZS9zaGEtMjI0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3J5cHRvL3N1
YnRsZS9zaGEtMjI0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvc2hhLTI1
Ni1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9zdWJ0bGUvc2hhLTI1Ni5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL3NoYS0zODQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vc3VidGxlL3NoYS0zODQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogY3J5cHRvL3N1YnRsZS9zaGEtNTEyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogY3J5cHRvL3N1YnRsZS9zaGEtNTEyLmh0bWw6IEFkZGVkLgorCiAyMDEzLTExLTAxICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBXZWJDcnlw
dG8gQUVTLUNCQwpJbmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMjI0LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS0yMjQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9z
aGEtMjI0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACitUZXN0
IGNyeXB0by5zdWJ0bGUuZGlnZXN0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
U0hBMjI0IG9mIFtdCisgICAgPSBbZDEgNGEgMDIgOGMgMmEgM2EgMmIgYzkgNDcgNjEgMDIgYmIg
MjggODIgMzQgYzQgMTUgYTIgYjAgMWYgODIgOGUgYTYgMmEgYzUgYjMgZTQgMmZdCitTSEEyMjQg
b2YgWzB4MF0KKyAgICA9IFtmZiBmOSAyOSAyYiA0MiAwMSA2MSA3YiBkYyA0ZCAzMCA1MyBmYyBl
MCAyNyAzNCAxNiA2YSA2OCAzZCA3ZCA4NSA4YSA3ZiA1ZiA1OSBiMCA3M10KK1NIQTIyNCBvZiBb
MCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdCisgICAgPSBbNzYgN2QgMGMgZGMgMTEg
MDcgOWIgYTggZGMgYTIgNzYgZGYgNWMgNGIgODUgNTAgN2QgZTYgN2QgY2UgNDcgZWQgYTQgY2Qg
OTEgOTYgZDMgMTJdCitTSEEyMjQgb2YgW25ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0XSks
IG5ldyBVaW50OEFycmF5KDUsIDYsIDcsIDgsIDksIDEwXSldCisgICAgPSBbNzYgN2QgMGMgZGMg
MTEgMDcgOWIgYTggZGMgYTIgNzYgZGYgNWMgNGIgODUgNTAgN2QgZTYgN2QgY2UgNDcgZWQgYTQg
Y2QgOTEgOTYgZDMgMTJdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9zaGEtMjI0LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMj
IC0wLDAgKzEgIyMKK3RleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpB
ZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMjI0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMjI0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS0yMjQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IGNyeXB0by5zdWJ0bGUuZGln
ZXN0LiIpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworaWYgKCF3aW5kb3cuc3VidGxlKQor
ICAgIHdpbmRvdy5jcnlwdG8uc3VidGxlID0gd2luZG93LmNyeXB0by53ZWJraXRTdWJ0bGU7CisK
K1Byb21pc2UuZnVsZmlsbChudWxsKS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGRlYnVnKCJTSEEy
MjQgb2YgW10iKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ3NoYS0yMjQnLCBb
bmV3IFVpbnQ4QXJyYXkoW10pXSk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHBy
aW50QWNjZXB0ZWRSZXN1bHQocmVzdWx0KTsKKworICAgIGRlYnVnKCJTSEEyMjQgb2YgWzB4MF0i
KQorICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFtZTogJ3NoYS0yMjQnfSwgW25l
dyBVaW50OEFycmF5KFswXSldKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgcHJp
bnRBY2NlcHRlZFJlc3VsdChyZXN1bHQpOworCisgICAgZGVidWcoIlNIQTIyNCBvZiBbMCwgMSwg
MiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdIik7CisgICAgdmFyIGRhdGEgPSBuZXcgVWludDhB
cnJheShbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdKTsKKyAgICByZXR1cm4gY3J5
cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6ICdzaGEtMjI0J30sIFtkYXRhXSk7Cit9KS50aGVuKGZ1
bmN0aW9uKHJlc3VsdCkgeworICAgIHByaW50QWNjZXB0ZWRSZXN1bHQocmVzdWx0KTsKKworICAg
IGRlYnVnKCJTSEEyMjQgb2YgW25ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0XSksIG5ldyBV
aW50OEFycmF5KDUsIDYsIDcsIDgsIDksIDEwXSldIik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0
bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTIyNCd9LCBbbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDMs
IDRdKSwgbmV3IFVpbnQ4QXJyYXkoWzUsIDYsIDcsIDgsIDksIDEwXSldKTsKK30pLnRoZW4oZnVu
Y3Rpb24ocmVzdWx0KSB7CisgICAgcHJpbnRBY2NlcHRlZFJlc3VsdChyZXN1bHQpOworICAgIGZp
bmlzaEpTVGVzdCgpOworfSk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMjI0Lmh0bWwKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L2h0bWwKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1
YnRsZS9zaGEtMjU2LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlw
dG8vc3VidGxlL3NoYS0yNTYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvY3J5cHRvL3N1YnRsZS9zaGEtMjU2LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE3IEBACitUZXN0IGNyeXB0by5zdWJ0bGUuZGlnZXN0LgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworU0hBMjU2IG9mIFtdCisgICAgPSBbZTMgYjAgYzQgNDIgOTggZmMg
MWMgMTQgOWEgZmIgZjQgYzggOTkgNmYgYjkgMjQgMjcgYWUgNDEgZTQgNjQgOWIgOTMgNGMgYTQg
OTUgOTkgMWIgNzggNTIgYjggNTVdCitTSEEyNTYgb2YgWzB4MF0KKyAgICA9IFs2ZSAzNCAwYiA5
YyBmZiBiMyA3YSA5OCA5YyBhNSA0NCBlNiBiYiA3OCAwYSAyYyA3OCA5MCAxZCAzZiBiMyAzNyAz
OCA3NiA4NSAxMSBhMyAwNiAxNyBhZiBhMCAxZF0KK1NIQTI1NiBvZiBbMCwgMSwgMiwgMywgNCwg
NSwgNiwgNywgOCwgOSwgMTBdCisgICAgPSBbNzggYTYgMjcgMzEgMDMgZDEgN2MgMzkgYTAgYjYg
MTIgNmUgMjIgNmMgZWMgNzAgZTMgMzMgMzcgZjQgYmMgNmEgMzggMDYgNzQgMDEgYjUgNGEgMzMg
ZTcgOGUgYWRdCitTSEEyNTYgb2YgW25ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0XSksIG5l
dyBVaW50OEFycmF5KDUsIDYsIDcsIDgsIDksIDEwXSldCisgICAgPSBbNzggYTYgMjcgMzEgMDMg
ZDEgN2MgMzkgYTAgYjYgMTIgNmUgMjIgNmMgZWMgNzAgZTMgMzMgMzcgZjQgYmMgNmEgMzggMDYg
NzQgMDEgYjUgNGEgMzMgZTcgOGUgYWRdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvY3J5
cHRvL3N1YnRsZS9zaGEtMjU2LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWlt
ZS10eXBlCiMjIC0wLDAgKzEgIyMKK3RleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRs
ZS9zaGEtMjU2Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9z
aGEtMjU2Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3No
YS0yNTYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tbW9uLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IGNyeXB0by5z
dWJ0bGUuZGlnZXN0LiIpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworaWYgKCF3aW5kb3cu
c3VidGxlKQorICAgIHdpbmRvdy5jcnlwdG8uc3VidGxlID0gd2luZG93LmNyeXB0by53ZWJraXRT
dWJ0bGU7CisKK1Byb21pc2UuZnVsZmlsbChudWxsKS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGRl
YnVnKCJTSEEyNTYgb2YgW10iKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ3No
YS0yNTYnLCBbbmV3IFVpbnQ4QXJyYXkoW10pXSk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkg
eworICAgIHByaW50QWNjZXB0ZWRSZXN1bHQocmVzdWx0KTsKKworICAgIGRlYnVnKCJTSEEyNTYg
b2YgWzB4MF0iKQorICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdCh7bmFtZTogJ3NoYS0y
NTYnfSwgW25ldyBVaW50OEFycmF5KFswXSldKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7
CisgICAgcHJpbnRBY2NlcHRlZFJlc3VsdChyZXN1bHQpOworCisgICAgZGVidWcoIlNIQTI1NiBv
ZiBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdIik7CisgICAgdmFyIGRhdGEgPSBu
ZXcgVWludDhBcnJheShbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdKTsKKyAgICBy
ZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6ICdzaGEtMjU2J30sIFtkYXRhXSk7Cit9
KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHByaW50QWNjZXB0ZWRSZXN1bHQocmVzdWx0
KTsKKworICAgIGRlYnVnKCJTSEEyNTYgb2YgW25ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0
XSksIG5ldyBVaW50OEFycmF5KDUsIDYsIDcsIDgsIDksIDEwXSldIik7CisgICAgcmV0dXJuIGNy
eXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTI1Nid9LCBbbmV3IFVpbnQ4QXJyYXkoWzAs
IDEsIDIsIDMsIDRdKSwgbmV3IFVpbnQ4QXJyYXkoWzUsIDYsIDcsIDgsIDksIDEwXSldKTsKK30p
LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgcHJpbnRBY2NlcHRlZFJlc3VsdChyZXN1bHQp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMjU2
Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0
L2h0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMv
Y3J5cHRvL3N1YnRsZS9zaGEtMzg0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9jcnlwdG8vc3VidGxlL3NoYS0zODQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMzg0LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE3IEBACitUZXN0IGNyeXB0by5zdWJ0bGUuZGlnZXN0LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworU0hBMzg0IG9mIFtdCisgICAgPSBbMzggYjAgNjAg
YTcgNTEgYWMgOTYgMzggNGMgZDkgMzIgN2UgYjEgYjEgZTMgNmEgMjEgZmQgYjcgMTEgMTQgYmUg
MDcgNDMgNGMgMGMgYzcgYmYgNjMgZjYgZTEgZGEgMjcgNGUgZGUgYmYgZTcgNmYgNjUgZmIgZDUg
MWEgZDIgZjEgNDggOTggYjkgNWJdCitTSEEzODQgb2YgWzB4MF0KKyAgICA9IFtiZSBjMCAyMSBi
NCBmMyA2OCBlMyAwNiA5MSAzNCBlMCAxMiBjMiBiNCAzMCA3MCA4MyBkMyBhOSBiZCBkMiAwNiBl
MiA0ZSA1ZiAwZCA4NiBlMSAzZCA2NiAzNiA2NSA1OSAzMyBlYyAyYiA0MSAzNCA2NSA5NiA2OCAx
NyBhOSBjMiAwOCBhMSAxNyAxN10KK1NIQTM4NCBvZiBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywg
OCwgOSwgMTBdCisgICAgPSBbODkgYmYgY2YgNTYgOWEgZTQgYWYgNzEgODUgMTAgZGEgNzggYzYg
NzQgMTQgMTAgOWYgNTcgMzkgYmIgNWMgNDAgZDUgMWMgOWMgOGMgNTAgZTIgYjIgY2UgZTggNmYg
MmYgODAgYzggYjkgZDYgOGYgN2MgMDEgMjAgMWEgMDcgMTQgNTcgMmYgZTYgMDJdCitTSEEzODQg
b2YgW25ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0XSksIG5ldyBVaW50OEFycmF5KDUsIDYs
IDcsIDgsIDksIDEwXSldCisgICAgPSBbODkgYmYgY2YgNTYgOWEgZTQgYWYgNzEgODUgMTAgZGEg
NzggYzYgNzQgMTQgMTAgOWYgNTcgMzkgYmIgNWMgNDAgZDUgMWMgOWMgOGMgNTAgZTIgYjIgY2Ug
ZTggNmYgMmYgODAgYzggYjkgZDYgOGYgN2MgMDEgMjAgMWEgMDcgMTQgNTcgMmYgZTYgMDJdCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMzg0LWV4cGVjdGVk
LnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK3RleHQv
cGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpBZGRlZDogc3ZuOmVvbC1zdHls
ZQojIyAtMCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJ
bmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMzg0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMzg0Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS0zODQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCJUZXN0IGNyeXB0by5zdWJ0bGUuZGlnZXN0LiIpOworCitqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworaWYgKCF3aW5kb3cuc3VidGxlKQorICAgIHdpbmRvdy5jcnlwdG8u
c3VidGxlID0gd2luZG93LmNyeXB0by53ZWJraXRTdWJ0bGU7CisKK1Byb21pc2UuZnVsZmlsbChu
dWxsKS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGRlYnVnKCJTSEEzODQgb2YgW10iKTsKKyAgICBy
ZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ3NoYS0zODQnLCBbbmV3IFVpbnQ4QXJyYXkoW10p
XSk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHByaW50QWNjZXB0ZWRSZXN1bHQo
cmVzdWx0KTsKKworICAgIGRlYnVnKCJTSEEzODQgb2YgWzB4MF0iKQorICAgIHJldHVybiBjcnlw
dG8uc3VidGxlLmRpZ2VzdCh7bmFtZTogJ3NoYS0zODQnfSwgW25ldyBVaW50OEFycmF5KFswXSld
KTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgcHJpbnRBY2NlcHRlZFJlc3VsdChy
ZXN1bHQpOworCisgICAgZGVidWcoIlNIQTM4NCBvZiBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywg
OCwgOSwgMTBdIik7CisgICAgdmFyIGRhdGEgPSBuZXcgVWludDhBcnJheShbMCwgMSwgMiwgMywg
NCwgNSwgNiwgNywgOCwgOSwgMTBdKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3Qo
e25hbWU6ICdzaGEtMzg0J30sIFtkYXRhXSk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewor
ICAgIHByaW50QWNjZXB0ZWRSZXN1bHQocmVzdWx0KTsKKworICAgIGRlYnVnKCJTSEEzODQgb2Yg
W25ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0XSksIG5ldyBVaW50OEFycmF5KDUsIDYsIDcs
IDgsIDksIDEwXSldIik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAn
c2hhLTM4NCd9LCBbbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDMsIDRdKSwgbmV3IFVpbnQ4QXJy
YXkoWzUsIDYsIDcsIDgsIDksIDEwXSldKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7Cisg
ICAgcHJpbnRBY2NlcHRlZFJlc3VsdChyZXN1bHQpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7
Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtMzg0Lmh0bWwKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3Zu
Om1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L2h0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtNTEyLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS01MTIt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9z
aGEtNTEyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACitUZXN0
IGNyeXB0by5zdWJ0bGUuZGlnZXN0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
U0hBNTEyIG9mIFtdCisgICAgPSBbY2YgODMgZTEgMzUgN2UgZWYgYjggYmQgZjEgNTQgMjggNTAg
ZDYgNmQgODAgMDcgZDYgMjAgZTQgMDUgMGIgNTcgMTUgZGMgODMgZjQgYTkgMjEgZDMgNmMgZTkg
Y2UgNDcgZDAgZDEgM2MgNWQgODUgZjIgYjAgZmYgODMgMTggZDIgODcgN2UgZWMgMmYgNjMgYjkg
MzEgYmQgNDcgNDEgN2EgODEgYTUgMzggMzIgN2EgZjkgMjcgZGEgM2VdCitTSEE1MTIgb2YgWzB4
MF0KKyAgICA9IFtiOCAyNCA0ZCAwMiA4OSA4MSBkNiA5MyBhZiA3YiA0NSA2YSBmOCBlZiBhNCBj
YSBkNiAzZCAyOCAyZSAxOSBmZiAxNCA5NCAyYyAyNCA2ZSA1MCBkOSAzNSAxZCAyMiA3MCA0YSA4
MCAyYSA3MSBjMyA1OCAwYiA2MyA3MCBkZSA0YyBlYiAyOSAzYyAzMiA0YSA4NCAyMyAzNCAyNSA1
NyBkNCBlNSBjMyA4NCAzOCBmMCBlMyA2OSAxMCBlZV0KK1NIQTUxMiBvZiBbMCwgMSwgMiwgMywg
NCwgNSwgNiwgNywgOCwgOSwgMTBdCisgICAgPSBbOGYgZmEgZWUgMGMgY2MgYzEgNjIgODUgMWYg
YWYgMDUgMWEgZTMgODYgNjcgZWUgZmQgNDIgM2MgMDEgNjQgYzUgMDAgNTUgZjggYWQgZTAgMGEg
ZmMgMzcgMDUgZTMgY2QgZWIgOTkgMDAgMDAgNGIgMGUgNDIgNmMgYTYgNmEgYjYgM2EgYTMgYjkg
OWIgMDcgNTIgNzMgZjQgNGYgZDMgN2MgMjIgYTMgNTUgNWMgNmYgZDEgZjMgN2MgY2JdCitTSEE1
MTIgb2YgW25ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0XSksIG5ldyBVaW50OEFycmF5KDUs
IDYsIDcsIDgsIDksIDEwXSldCisgICAgPSBbOGYgZmEgZWUgMGMgY2MgYzEgNjIgODUgMWYgYWYg
MDUgMWEgZTMgODYgNjcgZWUgZmQgNDIgM2MgMDEgNjQgYzUgMDAgNTUgZjggYWQgZTAgMGEgZmMg
MzcgMDUgZTMgY2QgZWIgOTkgMDAgMDAgNGIgMGUgNDIgNmMgYTYgNmEgYjYgM2EgYTMgYjkgOWIg
MDcgNTIgNzMgZjQgNGYgZDMgN2MgMjIgYTMgNTUgNWMgNmYgZDEgZjMgN2MgY2JdCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hh
bmdlcyBvbjogTGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtNTEyLWV4cGVjdGVkLnR4dApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK3RleHQvcGxhaW4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAt
MCwwICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
TGF5b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtNTEyLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvY3J5cHRvL3N1YnRsZS9zaGEtNTEyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9jcnlwdG8vc3VidGxlL3NoYS01MTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0IGNyeXB0by5zdWJ0bGUuZGlnZXN0LiIpOworCitqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworaWYgKCF3aW5kb3cuc3VidGxlKQorICAgIHdpbmRvdy5jcnlwdG8uc3VidGxl
ID0gd2luZG93LmNyeXB0by53ZWJraXRTdWJ0bGU7CisKK1Byb21pc2UuZnVsZmlsbChudWxsKS50
aGVuKGZ1bmN0aW9uKCkgeworICAgIGRlYnVnKCJTSEE1MTIgb2YgW10iKTsKKyAgICByZXR1cm4g
Y3J5cHRvLnN1YnRsZS5kaWdlc3QoJ3NoYS01MTInLCBbbmV3IFVpbnQ4QXJyYXkoW10pXSk7Cit9
KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHByaW50QWNjZXB0ZWRSZXN1bHQocmVzdWx0
KTsKKworICAgIGRlYnVnKCJTSEE1MTIgb2YgWzB4MF0iKQorICAgIHJldHVybiBjcnlwdG8uc3Vi
dGxlLmRpZ2VzdCh7bmFtZTogJ3NoYS01MTInfSwgW25ldyBVaW50OEFycmF5KFswXSldKTsKK30p
LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgcHJpbnRBY2NlcHRlZFJlc3VsdChyZXN1bHQp
OworCisgICAgZGVidWcoIlNIQTUxMiBvZiBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwg
MTBdIik7CisgICAgdmFyIGRhdGEgPSBuZXcgVWludDhBcnJheShbMCwgMSwgMiwgMywgNCwgNSwg
NiwgNywgOCwgOSwgMTBdKTsKKyAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3Qoe25hbWU6
ICdzaGEtNTEyJ30sIFtkYXRhXSk7Cit9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgIHBy
aW50QWNjZXB0ZWRSZXN1bHQocmVzdWx0KTsKKworICAgIGRlYnVnKCJTSEE1MTIgb2YgW25ldyBV
aW50OEFycmF5KFswLCAxLCAyLCAzLCA0XSksIG5ldyBVaW50OEFycmF5KDUsIDYsIDcsIDgsIDks
IDEwXSldIik7CisgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0KHtuYW1lOiAnc2hhLTUx
Mid9LCBbbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDMsIDRdKSwgbmV3IFVpbnQ4QXJyYXkoWzUs
IDYsIDcsIDgsIDksIDEwXSldKTsKK30pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgcHJp
bnRBY2NlcHRlZFJlc3VsdChyZXN1bHQpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7Cis8L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVz
dHMvY3J5cHRvL3N1YnRsZS9zaGEtNTEyLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUt
dHlwZQojIyAtMCwwICsxICMjCit0ZXh0L2h0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>