<?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>213766</bug_id>
          
          <creation_ts>2020-06-29 17:44:28 -0700</creation_ts>
          <short_desc>Remove WTF::MD5</short_desc>
          <delta_ts>2020-06-30 10:27:20 -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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1667377</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-29 17:44:28 -0700</bug_when>
    <thetext>Remove WTF::MD5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667378</commentid>
    <comment_count>1</comment_count>
      <attachid>403145</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-29 17:45:39 -0700</bug_when>
    <thetext>Created attachment 403145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667381</commentid>
    <comment_count>2</comment_count>
      <attachid>403146</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-29 17:50:26 -0700</bug_when>
    <thetext>Created attachment 403146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667401</commentid>
    <comment_count>3</comment_count>
      <attachid>403151</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-29 18:20:17 -0700</bug_when>
    <thetext>Created attachment 403151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667412</commentid>
    <comment_count>4</comment_count>
      <attachid>403156</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-29 18:40:41 -0700</bug_when>
    <thetext>Created attachment 403156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667537</commentid>
    <comment_count>5</comment_count>
      <attachid>403156</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-06-30 04:56:18 -0700</bug_when>
    <thetext>Comment on attachment 403156
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=403156&amp;action=review

&gt; Source/WebCore/platform/network/curl/CurlCacheEntry.cpp:223
&gt;          baseNameBuilder.append(hex(rawdata[i], Lowercase));

This might break existing network cache. I think that is fine.
If not, I guess CURL port can add back MD5 in CURL specific files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667609</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-30 10:26:27 -0700</bug_when>
    <thetext>Committed r263759: &lt;https://trac.webkit.org/changeset/263759&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403156.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667610</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-30 10:27:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/64944843&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403145</attachid>
            <date>2020-06-29 17:45:39 -0700</date>
            <delta_ts>2020-06-29 17:50:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213766-20200629184536.patch</filename>
            <type>text/plain</type>
            <size>20969</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM3MDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTI5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdURjo6TUQ1CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3NjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCB3YXMgb25seSB1
c2VkIGZvciBDVVJMJ3MgY2FjaGUgZmlsZSBuYW1lIGdlbmVyYXRpb24uCisgICAgICAgIElmIHlv
dSB3YW50IHRvIHVzZSBhIGJyb2tlbiBoYXNoIGZ1bmN0aW9uLCB1c2UgU0hBMS4KKworICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiB3dGYvTUQ1LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYv
TUQ1Lmg6IFJlbW92ZWQuCisKIDIwMjAtMDYtMjkgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRzdWhh
cnUub2h6ZWtpQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1NUUkVBTVNfQVBJ
IGNvbXBpbGF0aW9uIGZsYWcKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjYzNzA1KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw2IEBACiAJCUE4QTQ3
M0Q4MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQjgxNTFBODI1QTAwNDEyM0ZGIC8qIEhh
c2hUYWJsZS5jcHAgKi87IH07CiAJCUE4QTQ3M0U0MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhy
ZWFkQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzJDNTE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZENvY29hLm1tICovOyB9Owog
CQlBOEE0NzNFNTE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJDNjE1MUE4MjVBMDA0MTIz
RkYgLyogTWFpblRocmVhZC5jcHAgKi87IH07Ci0JCUE4QTQ3M0U5MTUxQTgyNUIwMDQxMjNGRiAv
KiBNRDUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThBNDcyQ0ExNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5jcHAgKi87IH07CiAJCUE4QTQ3M0VDMTUx
QTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkNEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRh
QWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJQThBNDczRjQxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJl
ck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThBNDcyRDUxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuY3BwICovOyB9Owog
CQlBOEE0NzNGOTE1MUE4MjVCMDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyREExNTFBODI1QjAw
NDEyM0ZGIC8qIE9TUmFuZG9tU291cmNlLmNwcCAqLzsgfTsKQEAgLTU5NSw4ICs1OTQsNiBAQAog
CQlBOEE0NzJDNjE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWluVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThBNDcyQzcxNTFBODI1QjAwNDEyM0ZGIC8qIE1haW5UaHJlYWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFpblRocmVhZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJDOTE1MUE4MjVCMDA0MTIzRkYgLyogTWF0aEV4dHJh
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoRXh0cmFzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MkNBMTUxQTgyNUIwMDQxMjNGRiAvKiBNRDUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTUQ1LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNRDUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThBNDcyQ0MxNTFBODI1QjAwNDEyM0ZGIC8qIE1lc3NhZ2VRdWV1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUXVldWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQ0QxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFB
bGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWV0YUFs
bG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkNFMTUxQTgy
NUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1ldGFBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEx
MDMsOCArMTEwMCw2IEBACiAJCQkJMUEyMzNDN0MxN0RBQTZFMzAwQTkzQUNGIC8qIE1hbGxvY1B0
ci5oICovLAogCQkJCTMwNENBNEU0MTM3NTQzN0VCRTkzMUQwMyAvKiBNYXJrYWJsZS5oICovLAog
CQkJCUE4QTQ3MkM5MTUxQTgyNUIwMDQxMjNGRiAvKiBNYXRoRXh0cmFzLmggKi8sCi0JCQkJQThB
NDcyQ0ExNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5jcHAgKi8sCi0JCQkJQThBNDcyQ0IxNTFBODI1
QjAwNDEyM0ZGIC8qIE1ENS5oICovLAogCQkJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBN
ZWRpYVRpbWUuY3BwICovLAogCQkJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRp
bWUuaCAqLywKIAkJCQlBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50
LmggKi8sCkBAIC0xNjkzLDcgKzE2ODgsNiBAQAogCQkJCTdBNkVCQTM0MjA3NDZDMzQwMDRGOUM0
NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U1MTUxQTgy
NUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U0
MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkQ29jb2EubW0gaW4gU291cmNlcyAqLywKLQkJ
CQlBOEE0NzNFOTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUFEODlCNkI3MUU2NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMjYzNzA1KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNiBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAg
ICAgTG9nZ2luZ0hhc2hNYXAuaAogICAgIExvZ2dpbmdIYXNoU2V0LmgKICAgICBMb2dnaW5nSGFz
aFRyYWl0cy5oCi0gICAgTUQ1LmgKICAgICBNYWNoU2VuZFJpZ2h0LmgKICAgICBNYWluVGhyZWFk
LmgKICAgICBNYWluVGhyZWFkRGF0YS5oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NRDUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL01ENS5jcHAJKHJldmlzaW9uIDI2MzcwNSkKKysr
IFNvdXJjZS9XVEYvd3RmL01ENS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyOTEgKzAsMCBAQAot
Ly8gVGhlIG9yaWdpbmFsIGZpbGUgd2FzIGNvcGllZCBmcm9tIHNxbGl0ZSwgYW5kIHdhcyBpbiB0
aGUgcHVibGljIGRvbWFpbi4KLS8vIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IDIwMDYgR29vZ2xl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotLyoKLSAqIFRoaXMgY29kZSBpbXBsZW1lbnRzIHRoZSBNRDUg
bWVzc2FnZS1kaWdlc3QgYWxnb3JpdGhtLgotICogVGhlIGFsZ29yaXRobSBpcyBkdWUgdG8gUm9u
IFJpdmVzdC4gIFRoaXMgY29kZSB3YXMKLSAqIHdyaXR0ZW4gYnkgQ29saW4gUGx1bWIgaW4gMTk5
Mywgbm8gY29weXJpZ2h0IGlzIGNsYWltZWQuCi0gKiBUaGlzIGNvZGUgaXMgaW4gdGhlIHB1Ymxp
YyBkb21haW47IGRvIHdpdGggaXQgd2hhdCB5b3Ugd2lzaC4KLSAqCi0gKiBFcXVpdmFsZW50IGNv
ZGUgaXMgYXZhaWxhYmxlIGZyb20gUlNBIERhdGEgU2VjdXJpdHksIEluYy4KLSAqIFRoaXMgY29k
ZSBoYXMgYmVlbiB0ZXN0ZWQgYWdhaW5zdCB0aGF0LCBhbmQgaXMgZXF1aXZhbGVudCwKLSAqIGV4
Y2VwdCB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIGluY2x1ZGUgdHdvIHBhZ2VzIG9mIGxlZ2FsZXNl
Ci0gKiB3aXRoIGV2ZXJ5IGNvcHkuCi0gKgotICogVG8gY29tcHV0ZSB0aGUgbWVzc2FnZSBkaWdl
c3Qgb2YgYSBjaHVuayBvZiBieXRlcywgY29uc3RydWN0IGFuCi0gKiBNRDUgaW5zdGFuY2UsIGNh
bGwgYWRkQnl0ZXMgYXMgbmVlZGVkIG9uIGJ1ZmZlcnMgZnVsbCBvZiBieXRlcywKLSAqIGFuZCB0
aGVuIGNhbGwgY2hlY2tzdW0sIHdoaWNoIHdpbGwgZmlsbCBhIHN1cHBsaWVkIDE2LWJ5dGUgYXJy
YXkKLSAqIHdpdGggdGhlIGRpZ2VzdC4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSA8d3RmL01ENS5oPgotCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0KLU1ENTo6TUQ1KCkKLXsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgotICAgIENDX01ENV9Jbml0KCZtX2NvbnRleHQpOwotICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAotfQotCi12b2lkIE1ENTo6YWRkQnl0ZXMoY29uc3QgdWludDhf
dCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KLSAgICBDQ19NRDVfVXBkYXRlKCZtX2NvbnRleHQsIGlucHV0LCBsZW5ndGgp
OwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotfQotCi12b2lkIE1ENTo6
Y2hlY2tzdW0oRGlnZXN0JiBoYXNoKQotewotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCi0gICAgQ0NfTUQ1X0ZpbmFsKGhhc2guZGF0YSgpLCAmbV9jb250ZXh0KTsKLSAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLX0KLSAgICAKLSNlbHNlCi0KLS8v
IE5vdGU6IHRoaXMgY29kZSBpcyBoYXJtbGVzcyBvbiBsaXR0bGUtZW5kaWFuIG1hY2hpbmVzLgot
Ci1zdGF0aWMgdm9pZCB0b0xpdHRsZUVuZGlhbih1aW50OF90KiBidWYsIHVuc2lnbmVkIGxvbmdz
KQotewotICAgIEFTU0VSVChsb25ncyA+IDApOwotICAgIGRvIHsKLSAgICAgICAgdWludDMyX3Qg
dCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihidWZbM10gPDwgOCB8IGJ1ZlsyXSkgPDwgMTYgfCBi
dWZbMV0gPDwgOCB8IGJ1ZlswXTsKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihidWYpICUgc2l6ZW9mKHQpKSwgImFsaWdubWVudCBlcnJv
ciBvZiBidWYiKTsKLSAgICAgICAgbWVtY3B5KGJ1ZiwgJnQsIHNpemVvZih0KSk7Ci0gICAgICAg
IGJ1ZiArPSBzaXplb2YodCk7Ci0gICAgfSB3aGlsZSAoLS1sb25ncyk7Ci19Ci0KLS8vIFRoZSBm
b3VyIGNvcmUgZnVuY3Rpb25zLgotLy8gRjEgaXMgb3JpZ2luYWxseSBkZWZpbmVkIGFzICh4ICYg
eSB8IH54ICYgeiksIGJ1dCBvcHRpbWl6ZWQgc29tZXdoYXQ6IDQgYml0IG9wcyAtPiAzIGJpdCBv
cHMuCi0jZGVmaW5lIEYxKHgsIHksIHopICh6IF4gKHggJiAoeSBeIHopKSkKLSNkZWZpbmUgRjIo
eCwgeSwgeikgRjEoeiwgeCwgeSkKLSNkZWZpbmUgRjMoeCwgeSwgeikgKHggXiB5IF4geikKLSNk
ZWZpbmUgRjQoeCwgeSwgeikgKHkgXiAoeCB8IH56KSkKLQotLy8gVGhpcyBpcyB0aGUgY2VudHJh
bCBzdGVwIGluIHRoZSBNRDUgYWxnb3JpdGhtLgotI2RlZmluZSBNRDVTVEVQKGYsIHcsIHgsIHks
IHosIGRhdGEsIHMpIFwKLSAgICAodyArPSBmKHgsIHksIHopICsgZGF0YSwgdyA9IHcgPDwgcyB8
IHcgPj4gKDMyIC0gcyksIHcgKz0geCkKLQotc3RhdGljIHZvaWQgTUQ1VHJhbnNmb3JtKHVpbnQz
Ml90IGJ1Zls0XSwgY29uc3QgdWludDMyX3QgaW5bMTZdKQotewotICAgIHVpbnQzMl90IGEgPSBi
dWZbMF07Ci0gICAgdWludDMyX3QgYiA9IGJ1ZlsxXTsKLSAgICB1aW50MzJfdCBjID0gYnVmWzJd
OwotICAgIHVpbnQzMl90IGQgPSBidWZbM107Ci0KLSAgICBNRDVTVEVQKEYxLCBhLCBiLCBjLCBk
LCBpblsgMF0rMHhkNzZhYTQ3OCwgIDcpOwotICAgIE1ENVNURVAoRjEsIGQsIGEsIGIsIGMsIGlu
WyAxXSsweGU4YzdiNzU2LCAxMik7Ci0gICAgTUQ1U1RFUChGMSwgYywgZCwgYSwgYiwgaW5bIDJd
KzB4MjQyMDcwZGIsIDE3KTsKLSAgICBNRDVTVEVQKEYxLCBiLCBjLCBkLCBhLCBpblsgM10rMHhj
MWJkY2VlZSwgMjIpOwotICAgIE1ENVNURVAoRjEsIGEsIGIsIGMsIGQsIGluWyA0XSsweGY1N2Mw
ZmFmLCAgNyk7Ci0gICAgTUQ1U1RFUChGMSwgZCwgYSwgYiwgYywgaW5bIDVdKzB4NDc4N2M2MmEs
IDEyKTsKLSAgICBNRDVTVEVQKEYxLCBjLCBkLCBhLCBiLCBpblsgNl0rMHhhODMwNDYxMywgMTcp
OwotICAgIE1ENVNURVAoRjEsIGIsIGMsIGQsIGEsIGluWyA3XSsweGZkNDY5NTAxLCAyMik7Ci0g
ICAgTUQ1U1RFUChGMSwgYSwgYiwgYywgZCwgaW5bIDhdKzB4Njk4MDk4ZDgsICA3KTsKLSAgICBN
RDVTVEVQKEYxLCBkLCBhLCBiLCBjLCBpblsgOV0rMHg4YjQ0ZjdhZiwgMTIpOwotICAgIE1ENVNU
RVAoRjEsIGMsIGQsIGEsIGIsIGluWzEwXSsweGZmZmY1YmIxLCAxNyk7Ci0gICAgTUQ1U1RFUChG
MSwgYiwgYywgZCwgYSwgaW5bMTFdKzB4ODk1Y2Q3YmUsIDIyKTsKLSAgICBNRDVTVEVQKEYxLCBh
LCBiLCBjLCBkLCBpblsxMl0rMHg2YjkwMTEyMiwgIDcpOwotICAgIE1ENVNURVAoRjEsIGQsIGEs
IGIsIGMsIGluWzEzXSsweGZkOTg3MTkzLCAxMik7Ci0gICAgTUQ1U1RFUChGMSwgYywgZCwgYSwg
YiwgaW5bMTRdKzB4YTY3OTQzOGUsIDE3KTsKLSAgICBNRDVTVEVQKEYxLCBiLCBjLCBkLCBhLCBp
blsxNV0rMHg0OWI0MDgyMSwgMjIpOwotCi0gICAgTUQ1U1RFUChGMiwgYSwgYiwgYywgZCwgaW5b
IDFdKzB4ZjYxZTI1NjIsICA1KTsKLSAgICBNRDVTVEVQKEYyLCBkLCBhLCBiLCBjLCBpblsgNl0r
MHhjMDQwYjM0MCwgIDkpOwotICAgIE1ENVNURVAoRjIsIGMsIGQsIGEsIGIsIGluWzExXSsweDI2
NWU1YTUxLCAxNCk7Ci0gICAgTUQ1U1RFUChGMiwgYiwgYywgZCwgYSwgaW5bIDBdKzB4ZTliNmM3
YWEsIDIwKTsKLSAgICBNRDVTVEVQKEYyLCBhLCBiLCBjLCBkLCBpblsgNV0rMHhkNjJmMTA1ZCwg
IDUpOwotICAgIE1ENVNURVAoRjIsIGQsIGEsIGIsIGMsIGluWzEwXSsweDAyNDQxNDUzLCAgOSk7
Ci0gICAgTUQ1U1RFUChGMiwgYywgZCwgYSwgYiwgaW5bMTVdKzB4ZDhhMWU2ODEsIDE0KTsKLSAg
ICBNRDVTVEVQKEYyLCBiLCBjLCBkLCBhLCBpblsgNF0rMHhlN2QzZmJjOCwgMjApOwotICAgIE1E
NVNURVAoRjIsIGEsIGIsIGMsIGQsIGluWyA5XSsweDIxZTFjZGU2LCAgNSk7Ci0gICAgTUQ1U1RF
UChGMiwgZCwgYSwgYiwgYywgaW5bMTRdKzB4YzMzNzA3ZDYsICA5KTsKLSAgICBNRDVTVEVQKEYy
LCBjLCBkLCBhLCBiLCBpblsgM10rMHhmNGQ1MGQ4NywgMTQpOwotICAgIE1ENVNURVAoRjIsIGIs
IGMsIGQsIGEsIGluWyA4XSsweDQ1NWExNGVkLCAyMCk7Ci0gICAgTUQ1U1RFUChGMiwgYSwgYiwg
YywgZCwgaW5bMTNdKzB4YTllM2U5MDUsICA1KTsKLSAgICBNRDVTVEVQKEYyLCBkLCBhLCBiLCBj
LCBpblsgMl0rMHhmY2VmYTNmOCwgIDkpOwotICAgIE1ENVNURVAoRjIsIGMsIGQsIGEsIGIsIGlu
WyA3XSsweDY3NmYwMmQ5LCAxNCk7Ci0gICAgTUQ1U1RFUChGMiwgYiwgYywgZCwgYSwgaW5bMTJd
KzB4OGQyYTRjOGEsIDIwKTsKLQotICAgIE1ENVNURVAoRjMsIGEsIGIsIGMsIGQsIGluWyA1XSsw
eGZmZmEzOTQyLCAgNCk7Ci0gICAgTUQ1U1RFUChGMywgZCwgYSwgYiwgYywgaW5bIDhdKzB4ODc3
MWY2ODEsIDExKTsKLSAgICBNRDVTVEVQKEYzLCBjLCBkLCBhLCBiLCBpblsxMV0rMHg2ZDlkNjEy
MiwgMTYpOwotICAgIE1ENVNURVAoRjMsIGIsIGMsIGQsIGEsIGluWzE0XSsweGZkZTUzODBjLCAy
Myk7Ci0gICAgTUQ1U1RFUChGMywgYSwgYiwgYywgZCwgaW5bIDFdKzB4YTRiZWVhNDQsICA0KTsK
LSAgICBNRDVTVEVQKEYzLCBkLCBhLCBiLCBjLCBpblsgNF0rMHg0YmRlY2ZhOSwgMTEpOwotICAg
IE1ENVNURVAoRjMsIGMsIGQsIGEsIGIsIGluWyA3XSsweGY2YmI0YjYwLCAxNik7Ci0gICAgTUQ1
U1RFUChGMywgYiwgYywgZCwgYSwgaW5bMTBdKzB4YmViZmJjNzAsIDIzKTsKLSAgICBNRDVTVEVQ
KEYzLCBhLCBiLCBjLCBkLCBpblsxM10rMHgyODliN2VjNiwgIDQpOwotICAgIE1ENVNURVAoRjMs
IGQsIGEsIGIsIGMsIGluWyAwXSsweGVhYTEyN2ZhLCAxMSk7Ci0gICAgTUQ1U1RFUChGMywgYywg
ZCwgYSwgYiwgaW5bIDNdKzB4ZDRlZjMwODUsIDE2KTsKLSAgICBNRDVTVEVQKEYzLCBiLCBjLCBk
LCBhLCBpblsgNl0rMHgwNDg4MWQwNSwgMjMpOwotICAgIE1ENVNURVAoRjMsIGEsIGIsIGMsIGQs
IGluWyA5XSsweGQ5ZDRkMDM5LCAgNCk7Ci0gICAgTUQ1U1RFUChGMywgZCwgYSwgYiwgYywgaW5b
MTJdKzB4ZTZkYjk5ZTUsIDExKTsKLSAgICBNRDVTVEVQKEYzLCBjLCBkLCBhLCBiLCBpblsxNV0r
MHgxZmEyN2NmOCwgMTYpOwotICAgIE1ENVNURVAoRjMsIGIsIGMsIGQsIGEsIGluWyAyXSsweGM0
YWM1NjY1LCAyMyk7Ci0KLSAgICBNRDVTVEVQKEY0LCBhLCBiLCBjLCBkLCBpblsgMF0rMHhmNDI5
MjI0NCwgIDYpOwotICAgIE1ENVNURVAoRjQsIGQsIGEsIGIsIGMsIGluWyA3XSsweDQzMmFmZjk3
LCAxMCk7Ci0gICAgTUQ1U1RFUChGNCwgYywgZCwgYSwgYiwgaW5bMTRdKzB4YWI5NDIzYTcsIDE1
KTsKLSAgICBNRDVTVEVQKEY0LCBiLCBjLCBkLCBhLCBpblsgNV0rMHhmYzkzYTAzOSwgMjEpOwot
ICAgIE1ENVNURVAoRjQsIGEsIGIsIGMsIGQsIGluWzEyXSsweDY1NWI1OWMzLCAgNik7Ci0gICAg
TUQ1U1RFUChGNCwgZCwgYSwgYiwgYywgaW5bIDNdKzB4OGYwY2NjOTIsIDEwKTsKLSAgICBNRDVT
VEVQKEY0LCBjLCBkLCBhLCBiLCBpblsxMF0rMHhmZmVmZjQ3ZCwgMTUpOwotICAgIE1ENVNURVAo
RjQsIGIsIGMsIGQsIGEsIGluWyAxXSsweDg1ODQ1ZGQxLCAyMSk7Ci0gICAgTUQ1U1RFUChGNCwg
YSwgYiwgYywgZCwgaW5bIDhdKzB4NmZhODdlNGYsICA2KTsKLSAgICBNRDVTVEVQKEY0LCBkLCBh
LCBiLCBjLCBpblsxNV0rMHhmZTJjZTZlMCwgMTApOwotICAgIE1ENVNURVAoRjQsIGMsIGQsIGEs
IGIsIGluWyA2XSsweGEzMDE0MzE0LCAxNSk7Ci0gICAgTUQ1U1RFUChGNCwgYiwgYywgZCwgYSwg
aW5bMTNdKzB4NGUwODExYTEsIDIxKTsKLSAgICBNRDVTVEVQKEY0LCBhLCBiLCBjLCBkLCBpblsg
NF0rMHhmNzUzN2U4MiwgIDYpOwotICAgIE1ENVNURVAoRjQsIGQsIGEsIGIsIGMsIGluWzExXSsw
eGJkM2FmMjM1LCAxMCk7Ci0gICAgTUQ1U1RFUChGNCwgYywgZCwgYSwgYiwgaW5bIDJdKzB4MmFk
N2QyYmIsIDE1KTsKLSAgICBNRDVTVEVQKEY0LCBiLCBjLCBkLCBhLCBpblsgOV0rMHhlYjg2ZDM5
MSwgMjEpOwotCi0gICAgYnVmWzBdICs9IGE7Ci0gICAgYnVmWzFdICs9IGI7Ci0gICAgYnVmWzJd
ICs9IGM7Ci0gICAgYnVmWzNdICs9IGQ7Ci19Ci0KLU1ENTo6TUQ1KCkKLXsKLSAgICBtX2J1Zlsw
XSA9IDB4Njc0NTIzMDE7Ci0gICAgbV9idWZbMV0gPSAweGVmY2RhYjg5OwotICAgIG1fYnVmWzJd
ID0gMHg5OGJhZGNmZTsKLSAgICBtX2J1ZlszXSA9IDB4MTAzMjU0NzY7Ci0gICAgbV9iaXRzWzBd
ID0gMDsKLSAgICBtX2JpdHNbMV0gPSAwOwotICAgIG1lbXNldChtX2luLCAwLCBzaXplb2YobV9p
bikpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4obV9pbikgJSBzaXplb2YodWludDMyX3QpKSwgImFsaWdubWVudCBlcnJvciBvZiBtX2luIik7
Ci19Ci0KLXZvaWQgTUQ1OjphZGRCeXRlcyhjb25zdCB1aW50OF90KiBpbnB1dCwgc2l6ZV90IGxl
bmd0aCkKLXsKLSAgICBjb25zdCB1aW50OF90KiBidWYgPSBpbnB1dDsKLQotICAgIC8vIFVwZGF0
ZSBiaXRjb3VudAotICAgIHVpbnQzMl90IHQgPSBtX2JpdHNbMF07Ci0gICAgbV9iaXRzWzBdID0g
dCArIChsZW5ndGggPDwgMyk7Ci0gICAgaWYgKG1fYml0c1swXSA8IHQpCi0gICAgICAgIG1fYml0
c1sxXSsrOyAvLyBDYXJyeSBmcm9tIGxvdyB0byBoaWdoCi0gICAgbV9iaXRzWzFdICs9IGxlbmd0
aCA+PiAyOTsKLQotICAgIHQgPSAodCA+PiAzKSAmIDB4M2Y7IC8vIEJ5dGVzIGFscmVhZHkgaW4g
c2hzSW5mby0+ZGF0YQotCi0gICAgLy8gSGFuZGxlIGFueSBsZWFkaW5nIG9kZC1zaXplZCBjaHVu
a3MKLQotICAgIGlmICh0KSB7Ci0gICAgICAgIHVpbnQ4X3QqIHAgPSBtX2luICsgdDsKLQotICAg
ICAgICB0ID0gNjQgLSB0OwotICAgICAgICBpZiAobGVuZ3RoIDwgdCkgewotICAgICAgICAgICAg
bWVtY3B5KHAsIGJ1ZiwgbGVuZ3RoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBtZW1jcHkocCwgYnVmLCB0KTsKLSAgICAgICAgdG9MaXR0bGVFbmRpYW4obV9pbiwg
MTYpOwotICAgICAgICBNRDVUcmFuc2Zvcm0obV9idWYsIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVp
bnQzMl90Kj4obV9pbikpOyAvLyBtX2luIGlzIDQtYnl0ZSBhbGlnbmVkLgotICAgICAgICBidWYg
Kz0gdDsKLSAgICAgICAgbGVuZ3RoIC09IHQ7Ci0gICAgfQotCi0gICAgLy8gUHJvY2VzcyBkYXRh
IGluIDY0LWJ5dGUgY2h1bmtzCi0KLSAgICB3aGlsZSAobGVuZ3RoID49IDY0KSB7Ci0gICAgICAg
IG1lbWNweShtX2luLCBidWYsIDY0KTsKLSAgICAgICAgdG9MaXR0bGVFbmRpYW4obV9pbiwgMTYp
OwotICAgICAgICBNRDVUcmFuc2Zvcm0obV9idWYsIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQz
Ml90Kj4obV9pbikpOyAvLyBtX2luIGlzIDQtYnl0ZSBhbGlnbmVkLgotICAgICAgICBidWYgKz0g
NjQ7Ci0gICAgICAgIGxlbmd0aCAtPSA2NDsKLSAgICB9Ci0KLSAgICAvLyBIYW5kbGUgYW55IHJl
bWFpbmluZyBieXRlcyBvZiBkYXRhLgotICAgIG1lbWNweShtX2luLCBidWYsIGxlbmd0aCk7Ci19
Ci0KLXZvaWQgTUQ1OjpjaGVja3N1bShEaWdlc3QmIGRpZ2VzdCkKLXsKLSAgICAvLyBDb21wdXRl
IG51bWJlciBvZiBieXRlcyBtb2QgNjQKLSAgICB1bnNpZ25lZCBjb3VudCA9IChtX2JpdHNbMF0g
Pj4gMykgJiAweDNGOwotCi0gICAgLy8gU2V0IHRoZSBmaXJzdCBjaGFyIG9mIHBhZGRpbmcgdG8g
MHg4MC4gIFRoaXMgaXMgc2FmZSBzaW5jZSB0aGVyZSBpcwotICAgIC8vIGFsd2F5cyBhdCBsZWFz
dCBvbmUgYnl0ZSBmcmVlCi0gICAgdWludDhfdCogcCA9IG1faW4gKyBjb3VudDsKLSAgICAqcCsr
ID0gMHg4MDsKLQotICAgIC8vIEJ5dGVzIG9mIHBhZGRpbmcgbmVlZGVkIHRvIG1ha2UgNjQgYnl0
ZXMKLSAgICBjb3VudCA9IDY0IC0gMSAtIGNvdW50OwotCi0gICAgLy8gUGFkIG91dCB0byA1NiBt
b2QgNjQKLSAgICBpZiAoY291bnQgPCA4KSB7Ci0gICAgICAgIC8vIFR3byBsb3RzIG9mIHBhZGRp
bmc6ICBQYWQgdGhlIGZpcnN0IGJsb2NrIHRvIDY0IGJ5dGVzCi0gICAgICAgIG1lbXNldChwLCAw
LCBjb3VudCk7Ci0gICAgICAgIHRvTGl0dGxlRW5kaWFuKG1faW4sIDE2KTsKLSAgICAgICAgTUQ1
VHJhbnNmb3JtKG1fYnVmLCByZWludGVycHJldF9jYXN0X3B0cjx1aW50MzJfdCAqPihtX2luKSk7
IC8vIG1faW4gaXMgNC1ieXRlIGFsaWduZWQuCi0KLSAgICAgICAgLy8gTm93IGZpbGwgdGhlIG5l
eHQgYmxvY2sgd2l0aCA1NiBieXRlcwotICAgICAgICBtZW1zZXQobV9pbiwgMCwgNTYpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIFBhZCBibG9jayB0byA1NiBieXRlcwotICAgICAgICBtZW1z
ZXQocCwgMCwgY291bnQgLSA4KTsKLSAgICB9Ci0gICAgdG9MaXR0bGVFbmRpYW4obV9pbiwgMTQp
OwotCi0gICAgLy8gQXBwZW5kIGxlbmd0aCBpbiBiaXRzIGFuZCB0cmFuc2Zvcm0KLSAgICBtZW1j
cHkobV9pbiArIDU2LCBtX2JpdHMsIHNpemVvZihtX2JpdHMpKTsKLQotICAgIE1ENVRyYW5zZm9y
bShtX2J1ZiwgcmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDMyX3QqPihtX2luKSk7Ci0gICAgdG9M
aXR0bGVFbmRpYW4ocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obV9idWYpLCA0KTsKLQotICAg
IC8vIE5vdywgbV9idWYgY29udGFpbnMgY2hlY2tzdW0gcmVzdWx0LgotICAgIHVpbnQ4X3QqIG1C
dWZVSW50OCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG1fYnVmKTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGhhc2hTaXplOyArK2kpCi0gICAgICAgIGRpZ2VzdFtpXSA9IG1CdWZV
SW50OFtpXTsKLQotICAgIC8vIEluIGNhc2UgaXQncyBzZW5zaXRpdmUKLSAgICBtZW1zZXQobV9i
dWYsIDAsIHNpemVvZihtX2J1ZikpOwotICAgIG1lbXNldChtX2JpdHMsIDAsIHNpemVvZihtX2Jp
dHMpKTsKLSAgICBtZW1zZXQobV9pbiwgMCwgc2l6ZW9mKG1faW4pKTsKLX0KLQotI2VuZGlmCi0K
LX0gLy8gbmFtZXNwYWNlIFdURgoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dURi93dGYv
TUQ1LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwot
bmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL01ENS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL01ENS5oCShyZXZpc2lvbiAy
NjM3MDUpCisrKyBTb3VyY2UvV1RGL3d0Zi9NRDUuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDc0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPGFycmF5PgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLQotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21t
b25EaWdlc3QuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV1RGIHsKLQotY2xhc3MgTUQ1IHsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgTUQ1KCk7Ci0KLSAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5w
dXQpCi0gICAgewotICAgICAgICBhZGRCeXRlcyhpbnB1dC5kYXRhKCksIGlucHV0LnNpemUoKSk7
Ci0gICAgfQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEJ5dGVzKGNvbnN0IHVpbnQ4
X3QqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKLQotICAgIC8vIFNpemUgb2YgdGhlIFNIQTEgaGFz
aAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgY29uc3RleHByIHNpemVfdCBoYXNoU2l6
ZSA9IDE2OwotCi0gICAgLy8gdHlwZSBmb3IgY29tcHV0aW5nIE1ENSBoYXNoCi0gICAgdHlwZWRl
ZiBzdGQ6OmFycmF5PHVpbnQ4X3QsIGhhc2hTaXplPiBEaWdlc3Q7Ci0KLSAgICAvLyBjaGVja3N1
bSBoYXMgYSBzaWRlIGVmZmVjdCBvZiByZXNldHRpbmcgdGhlIHN0YXRlIG9mIHRoZSBvYmplY3Qu
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2hlY2tzdW0oRGlnZXN0Jik7Ci0KLXByaXZh
dGU6Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ0NfTUQ1X0NUWCBtX2NvbnRleHQ7Ci0jZWxz
ZQotICAgIHVpbnQzMl90IG1fYnVmWzRdOwotICAgIHVpbnQzMl90IG1fYml0c1syXTsKLSAgICB1
aW50OF90IG1faW5bNjRdOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNp
bmcgV1RGOjpNRDU7CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV1RGL3d0Zi9NRDUuaApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2
MzcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDIwLTA2LTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdURjo6TUQ1CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3NjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmlsZW5hbWUpOgorCiAyMDIwLTA2
LTI5ICBUZXRzdWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIEVOQUJMRV9TVFJFQU1TX0FQSSBjb21waWxhdGlvbiBmbGFnCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcAkocmV2aXNpb24gMjYzNzA1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlD
VHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgot
I2luY2x1ZGUgPHd0Zi9NRDUuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVFbnRyeS5jcHAJKHJldmlzaW9uIDI2MzcwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcg
KzQyLDcgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1h
dGguaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL01ENS5oPgor
I2luY2x1ZGUgPHd0Zi9TSEExLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjExLDE1
ICsyMTEsMTUgQEAgdm9pZCBDdXJsQ2FjaGVFbnRyeTo6ZGlkRmluaXNoTG9hZGluZygpCiAKIHZv
aWQgQ3VybENhY2hlRW50cnk6OmdlbmVyYXRlQmFzZUZpbGVuYW1lKGNvbnN0IENTdHJpbmcmIHVy
bCkKIHsKLSAgICBNRDUgbWQ1OwotICAgIG1kNS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPih1cmwuZGF0YSgpKSwgdXJsLmxlbmd0aCgpKTsKKyAgICBTSEExIHNoYTE7
CisgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1cmwu
ZGF0YSgpKSwgdXJsLmxlbmd0aCgpKTsKIAotICAgIE1ENTo6RGlnZXN0IHN1bTsKLSAgICBtZDUu
Y2hlY2tzdW0oc3VtKTsKKyAgICBTSEExOjpEaWdlc3Qgc3VtOworICAgIHNoYTEuY29tcHV0ZUhh
c2goc3VtKTsKICAgICB1aW50OF90KiByYXdkYXRhID0gc3VtLmRhdGEoKTsKIAogICAgIFN0cmlu
Z0J1aWxkZXIgYmFzZU5hbWVCdWlsZGVyOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTUQ1
OjpoYXNoU2l6ZTsgaSsrKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7IGkrKykKICAg
ICAgICAgYmFzZU5hbWVCdWlsZGVyLmFwcGVuZChoZXgocmF3ZGF0YVtpXSwgTG93ZXJjYXNlKSk7
CiAgICAgbV9iYXNlbmFtZSA9IGJhc2VOYW1lQnVpbGRlci50b1N0cmluZygpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403146</attachid>
            <date>2020-06-29 17:50:26 -0700</date>
            <delta_ts>2020-06-29 18:20:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213766-20200629185025.patch</filename>
            <type>text/plain</type>
            <size>21112</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM3MDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTI5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdURjo6TUQ1CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3NjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCB3YXMgb25seSB1
c2VkIGZvciBDVVJMJ3MgY2FjaGUgZmlsZSBuYW1lIGdlbmVyYXRpb24uCisgICAgICAgIElmIHlv
dSB3YW50IHRvIHVzZSBhIGJyb2tlbiBoYXNoIGZ1bmN0aW9uLCB1c2UgU0hBMS4KKworICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiB3dGYvTUQ1LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYv
TUQ1Lmg6IFJlbW92ZWQuCisKIDIwMjAtMDYtMjkgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRzdWhh
cnUub2h6ZWtpQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1NUUkVBTVNfQVBJ
IGNvbXBpbGF0aW9uIGZsYWcKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjYzNzA1KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw2IEBACiAJCUE4QTQ3
M0Q4MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQjgxNTFBODI1QTAwNDEyM0ZGIC8qIEhh
c2hUYWJsZS5jcHAgKi87IH07CiAJCUE4QTQ3M0U0MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhy
ZWFkQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzJDNTE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZENvY29hLm1tICovOyB9Owog
CQlBOEE0NzNFNTE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJDNjE1MUE4MjVBMDA0MTIz
RkYgLyogTWFpblRocmVhZC5jcHAgKi87IH07Ci0JCUE4QTQ3M0U5MTUxQTgyNUIwMDQxMjNGRiAv
KiBNRDUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThBNDcyQ0ExNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5jcHAgKi87IH07CiAJCUE4QTQ3M0VDMTUx
QTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkNEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRh
QWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJQThBNDczRjQxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJl
ck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThBNDcyRDUxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuY3BwICovOyB9Owog
CQlBOEE0NzNGOTE1MUE4MjVCMDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyREExNTFBODI1QjAw
NDEyM0ZGIC8qIE9TUmFuZG9tU291cmNlLmNwcCAqLzsgfTsKQEAgLTU5NSw4ICs1OTQsNiBAQAog
CQlBOEE0NzJDNjE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWluVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThBNDcyQzcxNTFBODI1QjAwNDEyM0ZGIC8qIE1haW5UaHJlYWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFpblRocmVhZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJDOTE1MUE4MjVCMDA0MTIzRkYgLyogTWF0aEV4dHJh
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoRXh0cmFzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MkNBMTUxQTgyNUIwMDQxMjNGRiAvKiBNRDUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTUQ1LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNRDUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThBNDcyQ0MxNTFBODI1QjAwNDEyM0ZGIC8qIE1lc3NhZ2VRdWV1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUXVldWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQ0QxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFB
bGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWV0YUFs
bG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkNFMTUxQTgy
NUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1ldGFBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEx
MDMsOCArMTEwMCw2IEBACiAJCQkJMUEyMzNDN0MxN0RBQTZFMzAwQTkzQUNGIC8qIE1hbGxvY1B0
ci5oICovLAogCQkJCTMwNENBNEU0MTM3NTQzN0VCRTkzMUQwMyAvKiBNYXJrYWJsZS5oICovLAog
CQkJCUE4QTQ3MkM5MTUxQTgyNUIwMDQxMjNGRiAvKiBNYXRoRXh0cmFzLmggKi8sCi0JCQkJQThB
NDcyQ0ExNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5jcHAgKi8sCi0JCQkJQThBNDcyQ0IxNTFBODI1
QjAwNDEyM0ZGIC8qIE1ENS5oICovLAogCQkJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBN
ZWRpYVRpbWUuY3BwICovLAogCQkJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRp
bWUuaCAqLywKIAkJCQlBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50
LmggKi8sCkBAIC0xNjkzLDcgKzE2ODgsNiBAQAogCQkJCTdBNkVCQTM0MjA3NDZDMzQwMDRGOUM0
NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U1MTUxQTgy
NUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U0
MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkQ29jb2EubW0gaW4gU291cmNlcyAqLywKLQkJ
CQlBOEE0NzNFOTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUFEODlCNkI3MUU2NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMjYzNzA1KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNiBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAg
ICAgTG9nZ2luZ0hhc2hNYXAuaAogICAgIExvZ2dpbmdIYXNoU2V0LmgKICAgICBMb2dnaW5nSGFz
aFRyYWl0cy5oCi0gICAgTUQ1LmgKICAgICBNYWNoU2VuZFJpZ2h0LmgKICAgICBNYWluVGhyZWFk
LmgKICAgICBNYWluVGhyZWFkRGF0YS5oCkBAIC00MDMsNyArNDAyLDYgQEAgc2V0KFdURl9TT1VS
Q0VTCiAgICAgTG9jay5jcHAKICAgICBMb2NrZWRQcmludFN0cmVhbS5jcHAKICAgICBMb2dnZXIu
Y3BwCi0gICAgTUQ1LmNwcAogICAgIE1haW5UaHJlYWQuY3BwCiAgICAgTWVkaWFUaW1lLmNwcAog
ICAgIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL01ENS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTUQ1LmNwcAkocmV2aXNpb24gMjYzNzA1
KQorKysgU291cmNlL1dURi93dGYvTUQ1LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI5MSArMCww
IEBACi0vLyBUaGUgb3JpZ2luYWwgZmlsZSB3YXMgY29waWVkIGZyb20gc3FsaXRlLCBhbmQgd2Fz
IGluIHRoZSBwdWJsaWMgZG9tYWluLgotLy8gTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgMjAwNiBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vKgotICogVGhpcyBjb2RlIGltcGxlbWVudHMgdGhl
IE1ENSBtZXNzYWdlLWRpZ2VzdCBhbGdvcml0aG0uCi0gKiBUaGUgYWxnb3JpdGhtIGlzIGR1ZSB0
byBSb24gUml2ZXN0LiAgVGhpcyBjb2RlIHdhcwotICogd3JpdHRlbiBieSBDb2xpbiBQbHVtYiBp
biAxOTkzLCBubyBjb3B5cmlnaHQgaXMgY2xhaW1lZC4KLSAqIFRoaXMgY29kZSBpcyBpbiB0aGUg
cHVibGljIGRvbWFpbjsgZG8gd2l0aCBpdCB3aGF0IHlvdSB3aXNoLgotICoKLSAqIEVxdWl2YWxl
bnQgY29kZSBpcyBhdmFpbGFibGUgZnJvbSBSU0EgRGF0YSBTZWN1cml0eSwgSW5jLgotICogVGhp
cyBjb2RlIGhhcyBiZWVuIHRlc3RlZCBhZ2FpbnN0IHRoYXQsIGFuZCBpcyBlcXVpdmFsZW50LAot
ICogZXhjZXB0IHRoYXQgeW91IGRvbid0IG5lZWQgdG8gaW5jbHVkZSB0d28gcGFnZXMgb2YgbGVn
YWxlc2UKLSAqIHdpdGggZXZlcnkgY29weS4KLSAqCi0gKiBUbyBjb21wdXRlIHRoZSBtZXNzYWdl
IGRpZ2VzdCBvZiBhIGNodW5rIG9mIGJ5dGVzLCBjb25zdHJ1Y3QgYW4KLSAqIE1ENSBpbnN0YW5j
ZSwgY2FsbCBhZGRCeXRlcyBhcyBuZWVkZWQgb24gYnVmZmVycyBmdWxsIG9mIGJ5dGVzLAotICog
YW5kIHRoZW4gY2FsbCBjaGVja3N1bSwgd2hpY2ggd2lsbCBmaWxsIGEgc3VwcGxpZWQgMTYtYnl0
ZSBhcnJheQotICogd2l0aCB0aGUgZGlnZXN0LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlIDx3dGYvTUQ1Lmg+Ci0KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLSNpZiBQTEFU
Rk9STShDT0NPQSkKLQotTUQ1OjpNRDUoKQotewotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCi0gICAgQ0NfTUQ1X0luaXQoJm1fY29udGV4dCk7Ci0gICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi19Ci0KLXZvaWQgTUQ1OjphZGRCeXRlcyhjb25zdCB1
aW50OF90KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgotICAgIENDX01ENV9VcGRhdGUoJm1fY29udGV4dCwgaW5wdXQsIGxl
bmd0aCk7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi19Ci0KLXZvaWQg
TUQ1OjpjaGVja3N1bShEaWdlc3QmIGhhc2gpCi17Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KLSAgICBDQ19NRDVfRmluYWwoaGFzaC5kYXRhKCksICZtX2NvbnRleHQp
OwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotfQotICAgIAotI2Vsc2UK
LQotLy8gTm90ZTogdGhpcyBjb2RlIGlzIGhhcm1sZXNzIG9uIGxpdHRsZS1lbmRpYW4gbWFjaGlu
ZXMuCi0KLXN0YXRpYyB2b2lkIHRvTGl0dGxlRW5kaWFuKHVpbnQ4X3QqIGJ1ZiwgdW5zaWduZWQg
bG9uZ3MpCi17Ci0gICAgQVNTRVJUKGxvbmdzID4gMCk7Ci0gICAgZG8gewotICAgICAgICB1aW50
MzJfdCB0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJ1ZlszXSA8PCA4IHwgYnVmWzJdKSA8PCAx
NiB8IGJ1ZlsxXSA8PCA4IHwgYnVmWzBdOwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCEo
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGJ1ZikgJSBzaXplb2YodCkpLCAiYWxpZ25tZW50
IGVycm9yIG9mIGJ1ZiIpOwotICAgICAgICBtZW1jcHkoYnVmLCAmdCwgc2l6ZW9mKHQpKTsKLSAg
ICAgICAgYnVmICs9IHNpemVvZih0KTsKLSAgICB9IHdoaWxlICgtLWxvbmdzKTsKLX0KLQotLy8g
VGhlIGZvdXIgY29yZSBmdW5jdGlvbnMuCi0vLyBGMSBpcyBvcmlnaW5hbGx5IGRlZmluZWQgYXMg
KHggJiB5IHwgfnggJiB6KSwgYnV0IG9wdGltaXplZCBzb21ld2hhdDogNCBiaXQgb3BzIC0+IDMg
Yml0IG9wcy4KLSNkZWZpbmUgRjEoeCwgeSwgeikgKHogXiAoeCAmICh5IF4geikpKQotI2RlZmlu
ZSBGMih4LCB5LCB6KSBGMSh6LCB4LCB5KQotI2RlZmluZSBGMyh4LCB5LCB6KSAoeCBeIHkgXiB6
KQotI2RlZmluZSBGNCh4LCB5LCB6KSAoeSBeICh4IHwgfnopKQotCi0vLyBUaGlzIGlzIHRoZSBj
ZW50cmFsIHN0ZXAgaW4gdGhlIE1ENSBhbGdvcml0aG0uCi0jZGVmaW5lIE1ENVNURVAoZiwgdywg
eCwgeSwgeiwgZGF0YSwgcykgXAotICAgICh3ICs9IGYoeCwgeSwgeikgKyBkYXRhLCB3ID0gdyA8
PCBzIHwgdyA+PiAoMzIgLSBzKSwgdyArPSB4KQotCi1zdGF0aWMgdm9pZCBNRDVUcmFuc2Zvcm0o
dWludDMyX3QgYnVmWzRdLCBjb25zdCB1aW50MzJfdCBpblsxNl0pCi17Ci0gICAgdWludDMyX3Qg
YSA9IGJ1ZlswXTsKLSAgICB1aW50MzJfdCBiID0gYnVmWzFdOwotICAgIHVpbnQzMl90IGMgPSBi
dWZbMl07Ci0gICAgdWludDMyX3QgZCA9IGJ1ZlszXTsKLQotICAgIE1ENVNURVAoRjEsIGEsIGIs
IGMsIGQsIGluWyAwXSsweGQ3NmFhNDc4LCAgNyk7Ci0gICAgTUQ1U1RFUChGMSwgZCwgYSwgYiwg
YywgaW5bIDFdKzB4ZThjN2I3NTYsIDEyKTsKLSAgICBNRDVTVEVQKEYxLCBjLCBkLCBhLCBiLCBp
blsgMl0rMHgyNDIwNzBkYiwgMTcpOwotICAgIE1ENVNURVAoRjEsIGIsIGMsIGQsIGEsIGluWyAz
XSsweGMxYmRjZWVlLCAyMik7Ci0gICAgTUQ1U1RFUChGMSwgYSwgYiwgYywgZCwgaW5bIDRdKzB4
ZjU3YzBmYWYsICA3KTsKLSAgICBNRDVTVEVQKEYxLCBkLCBhLCBiLCBjLCBpblsgNV0rMHg0Nzg3
YzYyYSwgMTIpOwotICAgIE1ENVNURVAoRjEsIGMsIGQsIGEsIGIsIGluWyA2XSsweGE4MzA0NjEz
LCAxNyk7Ci0gICAgTUQ1U1RFUChGMSwgYiwgYywgZCwgYSwgaW5bIDddKzB4ZmQ0Njk1MDEsIDIy
KTsKLSAgICBNRDVTVEVQKEYxLCBhLCBiLCBjLCBkLCBpblsgOF0rMHg2OTgwOThkOCwgIDcpOwot
ICAgIE1ENVNURVAoRjEsIGQsIGEsIGIsIGMsIGluWyA5XSsweDhiNDRmN2FmLCAxMik7Ci0gICAg
TUQ1U1RFUChGMSwgYywgZCwgYSwgYiwgaW5bMTBdKzB4ZmZmZjViYjEsIDE3KTsKLSAgICBNRDVT
VEVQKEYxLCBiLCBjLCBkLCBhLCBpblsxMV0rMHg4OTVjZDdiZSwgMjIpOwotICAgIE1ENVNURVAo
RjEsIGEsIGIsIGMsIGQsIGluWzEyXSsweDZiOTAxMTIyLCAgNyk7Ci0gICAgTUQ1U1RFUChGMSwg
ZCwgYSwgYiwgYywgaW5bMTNdKzB4ZmQ5ODcxOTMsIDEyKTsKLSAgICBNRDVTVEVQKEYxLCBjLCBk
LCBhLCBiLCBpblsxNF0rMHhhNjc5NDM4ZSwgMTcpOwotICAgIE1ENVNURVAoRjEsIGIsIGMsIGQs
IGEsIGluWzE1XSsweDQ5YjQwODIxLCAyMik7Ci0KLSAgICBNRDVTVEVQKEYyLCBhLCBiLCBjLCBk
LCBpblsgMV0rMHhmNjFlMjU2MiwgIDUpOwotICAgIE1ENVNURVAoRjIsIGQsIGEsIGIsIGMsIGlu
WyA2XSsweGMwNDBiMzQwLCAgOSk7Ci0gICAgTUQ1U1RFUChGMiwgYywgZCwgYSwgYiwgaW5bMTFd
KzB4MjY1ZTVhNTEsIDE0KTsKLSAgICBNRDVTVEVQKEYyLCBiLCBjLCBkLCBhLCBpblsgMF0rMHhl
OWI2YzdhYSwgMjApOwotICAgIE1ENVNURVAoRjIsIGEsIGIsIGMsIGQsIGluWyA1XSsweGQ2MmYx
MDVkLCAgNSk7Ci0gICAgTUQ1U1RFUChGMiwgZCwgYSwgYiwgYywgaW5bMTBdKzB4MDI0NDE0NTMs
ICA5KTsKLSAgICBNRDVTVEVQKEYyLCBjLCBkLCBhLCBiLCBpblsxNV0rMHhkOGExZTY4MSwgMTQp
OwotICAgIE1ENVNURVAoRjIsIGIsIGMsIGQsIGEsIGluWyA0XSsweGU3ZDNmYmM4LCAyMCk7Ci0g
ICAgTUQ1U1RFUChGMiwgYSwgYiwgYywgZCwgaW5bIDldKzB4MjFlMWNkZTYsICA1KTsKLSAgICBN
RDVTVEVQKEYyLCBkLCBhLCBiLCBjLCBpblsxNF0rMHhjMzM3MDdkNiwgIDkpOwotICAgIE1ENVNU
RVAoRjIsIGMsIGQsIGEsIGIsIGluWyAzXSsweGY0ZDUwZDg3LCAxNCk7Ci0gICAgTUQ1U1RFUChG
MiwgYiwgYywgZCwgYSwgaW5bIDhdKzB4NDU1YTE0ZWQsIDIwKTsKLSAgICBNRDVTVEVQKEYyLCBh
LCBiLCBjLCBkLCBpblsxM10rMHhhOWUzZTkwNSwgIDUpOwotICAgIE1ENVNURVAoRjIsIGQsIGEs
IGIsIGMsIGluWyAyXSsweGZjZWZhM2Y4LCAgOSk7Ci0gICAgTUQ1U1RFUChGMiwgYywgZCwgYSwg
YiwgaW5bIDddKzB4Njc2ZjAyZDksIDE0KTsKLSAgICBNRDVTVEVQKEYyLCBiLCBjLCBkLCBhLCBp
blsxMl0rMHg4ZDJhNGM4YSwgMjApOwotCi0gICAgTUQ1U1RFUChGMywgYSwgYiwgYywgZCwgaW5b
IDVdKzB4ZmZmYTM5NDIsICA0KTsKLSAgICBNRDVTVEVQKEYzLCBkLCBhLCBiLCBjLCBpblsgOF0r
MHg4NzcxZjY4MSwgMTEpOwotICAgIE1ENVNURVAoRjMsIGMsIGQsIGEsIGIsIGluWzExXSsweDZk
OWQ2MTIyLCAxNik7Ci0gICAgTUQ1U1RFUChGMywgYiwgYywgZCwgYSwgaW5bMTRdKzB4ZmRlNTM4
MGMsIDIzKTsKLSAgICBNRDVTVEVQKEYzLCBhLCBiLCBjLCBkLCBpblsgMV0rMHhhNGJlZWE0NCwg
IDQpOwotICAgIE1ENVNURVAoRjMsIGQsIGEsIGIsIGMsIGluWyA0XSsweDRiZGVjZmE5LCAxMSk7
Ci0gICAgTUQ1U1RFUChGMywgYywgZCwgYSwgYiwgaW5bIDddKzB4ZjZiYjRiNjAsIDE2KTsKLSAg
ICBNRDVTVEVQKEYzLCBiLCBjLCBkLCBhLCBpblsxMF0rMHhiZWJmYmM3MCwgMjMpOwotICAgIE1E
NVNURVAoRjMsIGEsIGIsIGMsIGQsIGluWzEzXSsweDI4OWI3ZWM2LCAgNCk7Ci0gICAgTUQ1U1RF
UChGMywgZCwgYSwgYiwgYywgaW5bIDBdKzB4ZWFhMTI3ZmEsIDExKTsKLSAgICBNRDVTVEVQKEYz
LCBjLCBkLCBhLCBiLCBpblsgM10rMHhkNGVmMzA4NSwgMTYpOwotICAgIE1ENVNURVAoRjMsIGIs
IGMsIGQsIGEsIGluWyA2XSsweDA0ODgxZDA1LCAyMyk7Ci0gICAgTUQ1U1RFUChGMywgYSwgYiwg
YywgZCwgaW5bIDldKzB4ZDlkNGQwMzksICA0KTsKLSAgICBNRDVTVEVQKEYzLCBkLCBhLCBiLCBj
LCBpblsxMl0rMHhlNmRiOTllNSwgMTEpOwotICAgIE1ENVNURVAoRjMsIGMsIGQsIGEsIGIsIGlu
WzE1XSsweDFmYTI3Y2Y4LCAxNik7Ci0gICAgTUQ1U1RFUChGMywgYiwgYywgZCwgYSwgaW5bIDJd
KzB4YzRhYzU2NjUsIDIzKTsKLQotICAgIE1ENVNURVAoRjQsIGEsIGIsIGMsIGQsIGluWyAwXSsw
eGY0MjkyMjQ0LCAgNik7Ci0gICAgTUQ1U1RFUChGNCwgZCwgYSwgYiwgYywgaW5bIDddKzB4NDMy
YWZmOTcsIDEwKTsKLSAgICBNRDVTVEVQKEY0LCBjLCBkLCBhLCBiLCBpblsxNF0rMHhhYjk0MjNh
NywgMTUpOwotICAgIE1ENVNURVAoRjQsIGIsIGMsIGQsIGEsIGluWyA1XSsweGZjOTNhMDM5LCAy
MSk7Ci0gICAgTUQ1U1RFUChGNCwgYSwgYiwgYywgZCwgaW5bMTJdKzB4NjU1YjU5YzMsICA2KTsK
LSAgICBNRDVTVEVQKEY0LCBkLCBhLCBiLCBjLCBpblsgM10rMHg4ZjBjY2M5MiwgMTApOwotICAg
IE1ENVNURVAoRjQsIGMsIGQsIGEsIGIsIGluWzEwXSsweGZmZWZmNDdkLCAxNSk7Ci0gICAgTUQ1
U1RFUChGNCwgYiwgYywgZCwgYSwgaW5bIDFdKzB4ODU4NDVkZDEsIDIxKTsKLSAgICBNRDVTVEVQ
KEY0LCBhLCBiLCBjLCBkLCBpblsgOF0rMHg2ZmE4N2U0ZiwgIDYpOwotICAgIE1ENVNURVAoRjQs
IGQsIGEsIGIsIGMsIGluWzE1XSsweGZlMmNlNmUwLCAxMCk7Ci0gICAgTUQ1U1RFUChGNCwgYywg
ZCwgYSwgYiwgaW5bIDZdKzB4YTMwMTQzMTQsIDE1KTsKLSAgICBNRDVTVEVQKEY0LCBiLCBjLCBk
LCBhLCBpblsxM10rMHg0ZTA4MTFhMSwgMjEpOwotICAgIE1ENVNURVAoRjQsIGEsIGIsIGMsIGQs
IGluWyA0XSsweGY3NTM3ZTgyLCAgNik7Ci0gICAgTUQ1U1RFUChGNCwgZCwgYSwgYiwgYywgaW5b
MTFdKzB4YmQzYWYyMzUsIDEwKTsKLSAgICBNRDVTVEVQKEY0LCBjLCBkLCBhLCBiLCBpblsgMl0r
MHgyYWQ3ZDJiYiwgMTUpOwotICAgIE1ENVNURVAoRjQsIGIsIGMsIGQsIGEsIGluWyA5XSsweGVi
ODZkMzkxLCAyMSk7Ci0KLSAgICBidWZbMF0gKz0gYTsKLSAgICBidWZbMV0gKz0gYjsKLSAgICBi
dWZbMl0gKz0gYzsKLSAgICBidWZbM10gKz0gZDsKLX0KLQotTUQ1OjpNRDUoKQotewotICAgIG1f
YnVmWzBdID0gMHg2NzQ1MjMwMTsKLSAgICBtX2J1ZlsxXSA9IDB4ZWZjZGFiODk7Ci0gICAgbV9i
dWZbMl0gPSAweDk4YmFkY2ZlOwotICAgIG1fYnVmWzNdID0gMHgxMDMyNTQ3NjsKLSAgICBtX2Jp
dHNbMF0gPSAwOwotICAgIG1fYml0c1sxXSA9IDA7Ci0gICAgbWVtc2V0KG1faW4sIDAsIHNpemVv
ZihtX2luKSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90PihtX2luKSAlIHNpemVvZih1aW50MzJfdCkpLCAiYWxpZ25tZW50IGVycm9yIG9mIG1f
aW4iKTsKLX0KLQotdm9pZCBNRDU6OmFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGlucHV0LCBzaXpl
X3QgbGVuZ3RoKQotewotICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZiA9IGlucHV0OwotCi0gICAgLy8g
VXBkYXRlIGJpdGNvdW50Ci0gICAgdWludDMyX3QgdCA9IG1fYml0c1swXTsKLSAgICBtX2JpdHNb
MF0gPSB0ICsgKGxlbmd0aCA8PCAzKTsKLSAgICBpZiAobV9iaXRzWzBdIDwgdCkKLSAgICAgICAg
bV9iaXRzWzFdKys7IC8vIENhcnJ5IGZyb20gbG93IHRvIGhpZ2gKLSAgICBtX2JpdHNbMV0gKz0g
bGVuZ3RoID4+IDI5OwotCi0gICAgdCA9ICh0ID4+IDMpICYgMHgzZjsgLy8gQnl0ZXMgYWxyZWFk
eSBpbiBzaHNJbmZvLT5kYXRhCi0KLSAgICAvLyBIYW5kbGUgYW55IGxlYWRpbmcgb2RkLXNpemVk
IGNodW5rcwotCi0gICAgaWYgKHQpIHsKLSAgICAgICAgdWludDhfdCogcCA9IG1faW4gKyB0Owot
Ci0gICAgICAgIHQgPSA2NCAtIHQ7Ci0gICAgICAgIGlmIChsZW5ndGggPCB0KSB7Ci0gICAgICAg
ICAgICBtZW1jcHkocCwgYnVmLCBsZW5ndGgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIG1lbWNweShwLCBidWYsIHQpOwotICAgICAgICB0b0xpdHRsZUVuZGlhbiht
X2luLCAxNik7Ci0gICAgICAgIE1ENVRyYW5zZm9ybShtX2J1ZiwgcmVpbnRlcnByZXRfY2FzdF9w
dHI8dWludDMyX3QqPihtX2luKSk7IC8vIG1faW4gaXMgNC1ieXRlIGFsaWduZWQuCi0gICAgICAg
IGJ1ZiArPSB0OwotICAgICAgICBsZW5ndGggLT0gdDsKLSAgICB9Ci0KLSAgICAvLyBQcm9jZXNz
IGRhdGEgaW4gNjQtYnl0ZSBjaHVua3MKLQotICAgIHdoaWxlIChsZW5ndGggPj0gNjQpIHsKLSAg
ICAgICAgbWVtY3B5KG1faW4sIGJ1ZiwgNjQpOwotICAgICAgICB0b0xpdHRsZUVuZGlhbihtX2lu
LCAxNik7Ci0gICAgICAgIE1ENVRyYW5zZm9ybShtX2J1ZiwgcmVpbnRlcnByZXRfY2FzdF9wdHI8
dWludDMyX3QqPihtX2luKSk7IC8vIG1faW4gaXMgNC1ieXRlIGFsaWduZWQuCi0gICAgICAgIGJ1
ZiArPSA2NDsKLSAgICAgICAgbGVuZ3RoIC09IDY0OwotICAgIH0KLQotICAgIC8vIEhhbmRsZSBh
bnkgcmVtYWluaW5nIGJ5dGVzIG9mIGRhdGEuCi0gICAgbWVtY3B5KG1faW4sIGJ1ZiwgbGVuZ3Ro
KTsKLX0KLQotdm9pZCBNRDU6OmNoZWNrc3VtKERpZ2VzdCYgZGlnZXN0KQotewotICAgIC8vIENv
bXB1dGUgbnVtYmVyIG9mIGJ5dGVzIG1vZCA2NAotICAgIHVuc2lnbmVkIGNvdW50ID0gKG1fYml0
c1swXSA+PiAzKSAmIDB4M0Y7Ci0KLSAgICAvLyBTZXQgdGhlIGZpcnN0IGNoYXIgb2YgcGFkZGlu
ZyB0byAweDgwLiAgVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXJlIGlzCi0gICAgLy8gYWx3YXlzIGF0
IGxlYXN0IG9uZSBieXRlIGZyZWUKLSAgICB1aW50OF90KiBwID0gbV9pbiArIGNvdW50OwotICAg
ICpwKysgPSAweDgwOwotCi0gICAgLy8gQnl0ZXMgb2YgcGFkZGluZyBuZWVkZWQgdG8gbWFrZSA2
NCBieXRlcwotICAgIGNvdW50ID0gNjQgLSAxIC0gY291bnQ7Ci0KLSAgICAvLyBQYWQgb3V0IHRv
IDU2IG1vZCA2NAotICAgIGlmIChjb3VudCA8IDgpIHsKLSAgICAgICAgLy8gVHdvIGxvdHMgb2Yg
cGFkZGluZzogIFBhZCB0aGUgZmlyc3QgYmxvY2sgdG8gNjQgYnl0ZXMKLSAgICAgICAgbWVtc2V0
KHAsIDAsIGNvdW50KTsKLSAgICAgICAgdG9MaXR0bGVFbmRpYW4obV9pbiwgMTYpOwotICAgICAg
ICBNRDVUcmFuc2Zvcm0obV9idWYsIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQzMl90ICo+KG1f
aW4pKTsgLy8gbV9pbiBpcyA0LWJ5dGUgYWxpZ25lZC4KLQotICAgICAgICAvLyBOb3cgZmlsbCB0
aGUgbmV4dCBibG9jayB3aXRoIDU2IGJ5dGVzCi0gICAgICAgIG1lbXNldChtX2luLCAwLCA1Nik7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUGFkIGJsb2NrIHRvIDU2IGJ5dGVzCi0gICAgICAg
IG1lbXNldChwLCAwLCBjb3VudCAtIDgpOwotICAgIH0KLSAgICB0b0xpdHRsZUVuZGlhbihtX2lu
LCAxNCk7Ci0KLSAgICAvLyBBcHBlbmQgbGVuZ3RoIGluIGJpdHMgYW5kIHRyYW5zZm9ybQotICAg
IG1lbWNweShtX2luICsgNTYsIG1fYml0cywgc2l6ZW9mKG1fYml0cykpOwotCi0gICAgTUQ1VHJh
bnNmb3JtKG1fYnVmLCByZWludGVycHJldF9jYXN0X3B0cjx1aW50MzJfdCo+KG1faW4pKTsKLSAg
ICB0b0xpdHRsZUVuZGlhbihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2J1ZiksIDQpOwot
Ci0gICAgLy8gTm93LCBtX2J1ZiBjb250YWlucyBjaGVja3N1bSByZXN1bHQuCi0gICAgdWludDhf
dCogbUJ1ZlVJbnQ4ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obV9idWYpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgaGFzaFNpemU7ICsraSkKLSAgICAgICAgZGlnZXN0W2ldID0g
bUJ1ZlVJbnQ4W2ldOwotCi0gICAgLy8gSW4gY2FzZSBpdCdzIHNlbnNpdGl2ZQotICAgIG1lbXNl
dChtX2J1ZiwgMCwgc2l6ZW9mKG1fYnVmKSk7Ci0gICAgbWVtc2V0KG1fYml0cywgMCwgc2l6ZW9m
KG1fYml0cykpOwotICAgIG1lbXNldChtX2luLCAwLCBzaXplb2YobV9pbikpOwotfQotCi0jZW5k
aWYKLQotfSAvLyBuYW1lc3BhY2UgV1RGCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV1RG
L3d0Zi9NRDUuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNl
L1dURi93dGYvTUQ1LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTUQ1LmgJKHJldmlz
aW9uIDI2MzcwNSkKKysrIFNvdXJjZS9XVEYvd3RmL01ENS5oCShub25leGlzdGVudCkKQEAgLTEs
NzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8Q29tbW9uQ3J5cHRv
L0NvbW1vbkRpZ2VzdC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBNRDUg
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBNRDUoKTsKLQotICAgIHZvaWQgYWRkQnl0ZXMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBpbnB1dCkKLSAgICB7Ci0gICAgICAgIGFkZEJ5dGVzKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6
ZSgpKTsKLSAgICB9Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkQnl0ZXMoY29uc3Qg
dWludDhfdCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOwotCi0gICAgLy8gU2l6ZSBvZiB0aGUgU0hB
MSBoYXNoCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGhh
c2hTaXplID0gMTY7Ci0KLSAgICAvLyB0eXBlIGZvciBjb21wdXRpbmcgTUQ1IGhhc2gKLSAgICB0
eXBlZGVmIHN0ZDo6YXJyYXk8dWludDhfdCwgaGFzaFNpemU+IERpZ2VzdDsKLQotICAgIC8vIGNo
ZWNrc3VtIGhhcyBhIHNpZGUgZWZmZWN0IG9mIHJlc2V0dGluZyB0aGUgc3RhdGUgb2YgdGhlIG9i
amVjdC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjaGVja3N1bShEaWdlc3QmKTsKLQot
cHJpdmF0ZToKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDQ19NRDVfQ1RYIG1fY29udGV4dDsK
LSNlbHNlCi0gICAgdWludDMyX3QgbV9idWZbNF07Ci0gICAgdWludDMyX3QgbV9iaXRzWzJdOwot
ICAgIHVpbnQ4X3QgbV9pbls2NF07Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgot
Ci11c2luZyBXVEY6Ok1ENTsKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XVEYvd3RmL01E
NS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRp
dmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMjYzNzA1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMjAtMDYtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgV1RGOjpNRDUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc2NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpnZW5l
cmF0ZUJhc2VGaWxlbmFtZSk6CisKIDIwMjAtMDYtMjkgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRz
dWhhcnUub2h6ZWtpQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1NUUkVBTVNf
QVBJIGNvbXBpbGF0aW9uIGZsYWcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCShyZXZpc2lvbiAyNjM3
MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIldlYlNv
Y2tldC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL01ENS5oPgogI2luY2x1
ZGUgPHd0Zi9TSEExLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9TdHJpbmdFeHRyYXMuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAkocmV2aXNpb24gMjYzNzA1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1i
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvTUQ1Lmg+CisjaW5jbHVkZSA8d3RmL1NIQTEuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMTEsMTUgKzIxMSwxNSBAQCB2b2lkIEN1cmxDYWNoZUVu
dHJ5OjpkaWRGaW5pc2hMb2FkaW5nKCkKIAogdm9pZCBDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVC
YXNlRmlsZW5hbWUoY29uc3QgQ1N0cmluZyYgdXJsKQogewotICAgIE1ENSBtZDU7Ci0gICAgbWQ1
LmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHVybC5kYXRhKCkpLCB1
cmwubGVuZ3RoKCkpOworICAgIFNIQTEgc2hhMTsKKyAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHVybC5kYXRhKCkpLCB1cmwubGVuZ3RoKCkpOwogCi0g
ICAgTUQ1OjpEaWdlc3Qgc3VtOwotICAgIG1kNS5jaGVja3N1bShzdW0pOworICAgIFNIQTE6OkRp
Z2VzdCBzdW07CisgICAgc2hhMS5jb21wdXRlSGFzaChzdW0pOwogICAgIHVpbnQ4X3QqIHJhd2Rh
dGEgPSBzdW0uZGF0YSgpOwogCiAgICAgU3RyaW5nQnVpbGRlciBiYXNlTmFtZUJ1aWxkZXI7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBNRDU6Omhhc2hTaXplOyBpKyspCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCAxNjsgaSsrKQogICAgICAgICBiYXNlTmFtZUJ1aWxkZXIuYXBwZW5k
KGhleChyYXdkYXRhW2ldLCBMb3dlcmNhc2UpKTsKICAgICBtX2Jhc2VuYW1lID0gYmFzZU5hbWVC
dWlsZGVyLnRvU3RyaW5nKCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403151</attachid>
            <date>2020-06-29 18:20:17 -0700</date>
            <delta_ts>2020-06-29 18:40:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213766-20200629192016.patch</filename>
            <type>text/plain</type>
            <size>46788</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM3MDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTI5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdURjo6TUQ1CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3NjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCB3YXMgb25seSB1
c2VkIGZvciBDVVJMJ3MgY2FjaGUgZmlsZSBuYW1lIGdlbmVyYXRpb24uCisgICAgICAgIElmIHlv
dSB3YW50IHRvIHVzZSBhIGJyb2tlbiBoYXNoIGZ1bmN0aW9uLCB1c2UgU0hBMS4KKworICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiB3dGYvTUQ1LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYv
TUQ1Lmg6IFJlbW92ZWQuCisKIDIwMjAtMDYtMjkgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRzdWhh
cnUub2h6ZWtpQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1NUUkVBTVNfQVBJ
IGNvbXBpbGF0aW9uIGZsYWcKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjYzNzA1KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw2IEBACiAJCUE4QTQ3
M0Q4MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQjgxNTFBODI1QTAwNDEyM0ZGIC8qIEhh
c2hUYWJsZS5jcHAgKi87IH07CiAJCUE4QTQ3M0U0MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhy
ZWFkQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzJDNTE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZENvY29hLm1tICovOyB9Owog
CQlBOEE0NzNFNTE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJDNjE1MUE4MjVBMDA0MTIz
RkYgLyogTWFpblRocmVhZC5jcHAgKi87IH07Ci0JCUE4QTQ3M0U5MTUxQTgyNUIwMDQxMjNGRiAv
KiBNRDUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThBNDcyQ0ExNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5jcHAgKi87IH07CiAJCUE4QTQ3M0VDMTUx
QTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkNEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRh
QWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJQThBNDczRjQxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJl
ck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThBNDcyRDUxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuY3BwICovOyB9Owog
CQlBOEE0NzNGOTE1MUE4MjVCMDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyREExNTFBODI1QjAw
NDEyM0ZGIC8qIE9TUmFuZG9tU291cmNlLmNwcCAqLzsgfTsKQEAgLTU5NSw4ICs1OTQsNiBAQAog
CQlBOEE0NzJDNjE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWluVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThBNDcyQzcxNTFBODI1QjAwNDEyM0ZGIC8qIE1haW5UaHJlYWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFpblRocmVhZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJDOTE1MUE4MjVCMDA0MTIzRkYgLyogTWF0aEV4dHJh
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoRXh0cmFzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MkNBMTUxQTgyNUIwMDQxMjNGRiAvKiBNRDUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTUQ1LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNRDUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThBNDcyQ0MxNTFBODI1QjAwNDEyM0ZGIC8qIE1lc3NhZ2VRdWV1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUXVldWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQ0QxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFB
bGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWV0YUFs
bG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkNFMTUxQTgy
NUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1ldGFBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEx
MDMsOCArMTEwMCw2IEBACiAJCQkJMUEyMzNDN0MxN0RBQTZFMzAwQTkzQUNGIC8qIE1hbGxvY1B0
ci5oICovLAogCQkJCTMwNENBNEU0MTM3NTQzN0VCRTkzMUQwMyAvKiBNYXJrYWJsZS5oICovLAog
CQkJCUE4QTQ3MkM5MTUxQTgyNUIwMDQxMjNGRiAvKiBNYXRoRXh0cmFzLmggKi8sCi0JCQkJQThB
NDcyQ0ExNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5jcHAgKi8sCi0JCQkJQThBNDcyQ0IxNTFBODI1
QjAwNDEyM0ZGIC8qIE1ENS5oICovLAogCQkJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBN
ZWRpYVRpbWUuY3BwICovLAogCQkJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRp
bWUuaCAqLywKIAkJCQlBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50
LmggKi8sCkBAIC0xNjkzLDcgKzE2ODgsNiBAQAogCQkJCTdBNkVCQTM0MjA3NDZDMzQwMDRGOUM0
NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U1MTUxQTgy
NUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U0
MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkQ29jb2EubW0gaW4gU291cmNlcyAqLywKLQkJ
CQlBOEE0NzNFOTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUFEODlCNkI3MUU2NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMjYzNzA1KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNiBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAg
ICAgTG9nZ2luZ0hhc2hNYXAuaAogICAgIExvZ2dpbmdIYXNoU2V0LmgKICAgICBMb2dnaW5nSGFz
aFRyYWl0cy5oCi0gICAgTUQ1LmgKICAgICBNYWNoU2VuZFJpZ2h0LmgKICAgICBNYWluVGhyZWFk
LmgKICAgICBNYWluVGhyZWFkRGF0YS5oCkBAIC00MDMsNyArNDAyLDYgQEAgc2V0KFdURl9TT1VS
Q0VTCiAgICAgTG9jay5jcHAKICAgICBMb2NrZWRQcmludFN0cmVhbS5jcHAKICAgICBMb2dnZXIu
Y3BwCi0gICAgTUQ1LmNwcAogICAgIE1haW5UaHJlYWQuY3BwCiAgICAgTWVkaWFUaW1lLmNwcAog
ICAgIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL01ENS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTUQ1LmNwcAkocmV2aXNpb24gMjYzNzA1
KQorKysgU291cmNlL1dURi93dGYvTUQ1LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI5MSArMCww
IEBACi0vLyBUaGUgb3JpZ2luYWwgZmlsZSB3YXMgY29waWVkIGZyb20gc3FsaXRlLCBhbmQgd2Fz
IGluIHRoZSBwdWJsaWMgZG9tYWluLgotLy8gTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgMjAwNiBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vKgotICogVGhpcyBjb2RlIGltcGxlbWVudHMgdGhl
IE1ENSBtZXNzYWdlLWRpZ2VzdCBhbGdvcml0aG0uCi0gKiBUaGUgYWxnb3JpdGhtIGlzIGR1ZSB0
byBSb24gUml2ZXN0LiAgVGhpcyBjb2RlIHdhcwotICogd3JpdHRlbiBieSBDb2xpbiBQbHVtYiBp
biAxOTkzLCBubyBjb3B5cmlnaHQgaXMgY2xhaW1lZC4KLSAqIFRoaXMgY29kZSBpcyBpbiB0aGUg
cHVibGljIGRvbWFpbjsgZG8gd2l0aCBpdCB3aGF0IHlvdSB3aXNoLgotICoKLSAqIEVxdWl2YWxl
bnQgY29kZSBpcyBhdmFpbGFibGUgZnJvbSBSU0EgRGF0YSBTZWN1cml0eSwgSW5jLgotICogVGhp
cyBjb2RlIGhhcyBiZWVuIHRlc3RlZCBhZ2FpbnN0IHRoYXQsIGFuZCBpcyBlcXVpdmFsZW50LAot
ICogZXhjZXB0IHRoYXQgeW91IGRvbid0IG5lZWQgdG8gaW5jbHVkZSB0d28gcGFnZXMgb2YgbGVn
YWxlc2UKLSAqIHdpdGggZXZlcnkgY29weS4KLSAqCi0gKiBUbyBjb21wdXRlIHRoZSBtZXNzYWdl
IGRpZ2VzdCBvZiBhIGNodW5rIG9mIGJ5dGVzLCBjb25zdHJ1Y3QgYW4KLSAqIE1ENSBpbnN0YW5j
ZSwgY2FsbCBhZGRCeXRlcyBhcyBuZWVkZWQgb24gYnVmZmVycyBmdWxsIG9mIGJ5dGVzLAotICog
YW5kIHRoZW4gY2FsbCBjaGVja3N1bSwgd2hpY2ggd2lsbCBmaWxsIGEgc3VwcGxpZWQgMTYtYnl0
ZSBhcnJheQotICogd2l0aCB0aGUgZGlnZXN0LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlIDx3dGYvTUQ1Lmg+Ci0KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLSNpZiBQTEFU
Rk9STShDT0NPQSkKLQotTUQ1OjpNRDUoKQotewotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCi0gICAgQ0NfTUQ1X0luaXQoJm1fY29udGV4dCk7Ci0gICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi19Ci0KLXZvaWQgTUQ1OjphZGRCeXRlcyhjb25zdCB1
aW50OF90KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgotICAgIENDX01ENV9VcGRhdGUoJm1fY29udGV4dCwgaW5wdXQsIGxl
bmd0aCk7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi19Ci0KLXZvaWQg
TUQ1OjpjaGVja3N1bShEaWdlc3QmIGhhc2gpCi17Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KLSAgICBDQ19NRDVfRmluYWwoaGFzaC5kYXRhKCksICZtX2NvbnRleHQp
OwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotfQotICAgIAotI2Vsc2UK
LQotLy8gTm90ZTogdGhpcyBjb2RlIGlzIGhhcm1sZXNzIG9uIGxpdHRsZS1lbmRpYW4gbWFjaGlu
ZXMuCi0KLXN0YXRpYyB2b2lkIHRvTGl0dGxlRW5kaWFuKHVpbnQ4X3QqIGJ1ZiwgdW5zaWduZWQg
bG9uZ3MpCi17Ci0gICAgQVNTRVJUKGxvbmdzID4gMCk7Ci0gICAgZG8gewotICAgICAgICB1aW50
MzJfdCB0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJ1ZlszXSA8PCA4IHwgYnVmWzJdKSA8PCAx
NiB8IGJ1ZlsxXSA8PCA4IHwgYnVmWzBdOwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCEo
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGJ1ZikgJSBzaXplb2YodCkpLCAiYWxpZ25tZW50
IGVycm9yIG9mIGJ1ZiIpOwotICAgICAgICBtZW1jcHkoYnVmLCAmdCwgc2l6ZW9mKHQpKTsKLSAg
ICAgICAgYnVmICs9IHNpemVvZih0KTsKLSAgICB9IHdoaWxlICgtLWxvbmdzKTsKLX0KLQotLy8g
VGhlIGZvdXIgY29yZSBmdW5jdGlvbnMuCi0vLyBGMSBpcyBvcmlnaW5hbGx5IGRlZmluZWQgYXMg
KHggJiB5IHwgfnggJiB6KSwgYnV0IG9wdGltaXplZCBzb21ld2hhdDogNCBiaXQgb3BzIC0+IDMg
Yml0IG9wcy4KLSNkZWZpbmUgRjEoeCwgeSwgeikgKHogXiAoeCAmICh5IF4geikpKQotI2RlZmlu
ZSBGMih4LCB5LCB6KSBGMSh6LCB4LCB5KQotI2RlZmluZSBGMyh4LCB5LCB6KSAoeCBeIHkgXiB6
KQotI2RlZmluZSBGNCh4LCB5LCB6KSAoeSBeICh4IHwgfnopKQotCi0vLyBUaGlzIGlzIHRoZSBj
ZW50cmFsIHN0ZXAgaW4gdGhlIE1ENSBhbGdvcml0aG0uCi0jZGVmaW5lIE1ENVNURVAoZiwgdywg
eCwgeSwgeiwgZGF0YSwgcykgXAotICAgICh3ICs9IGYoeCwgeSwgeikgKyBkYXRhLCB3ID0gdyA8
PCBzIHwgdyA+PiAoMzIgLSBzKSwgdyArPSB4KQotCi1zdGF0aWMgdm9pZCBNRDVUcmFuc2Zvcm0o
dWludDMyX3QgYnVmWzRdLCBjb25zdCB1aW50MzJfdCBpblsxNl0pCi17Ci0gICAgdWludDMyX3Qg
YSA9IGJ1ZlswXTsKLSAgICB1aW50MzJfdCBiID0gYnVmWzFdOwotICAgIHVpbnQzMl90IGMgPSBi
dWZbMl07Ci0gICAgdWludDMyX3QgZCA9IGJ1ZlszXTsKLQotICAgIE1ENVNURVAoRjEsIGEsIGIs
IGMsIGQsIGluWyAwXSsweGQ3NmFhNDc4LCAgNyk7Ci0gICAgTUQ1U1RFUChGMSwgZCwgYSwgYiwg
YywgaW5bIDFdKzB4ZThjN2I3NTYsIDEyKTsKLSAgICBNRDVTVEVQKEYxLCBjLCBkLCBhLCBiLCBp
blsgMl0rMHgyNDIwNzBkYiwgMTcpOwotICAgIE1ENVNURVAoRjEsIGIsIGMsIGQsIGEsIGluWyAz
XSsweGMxYmRjZWVlLCAyMik7Ci0gICAgTUQ1U1RFUChGMSwgYSwgYiwgYywgZCwgaW5bIDRdKzB4
ZjU3YzBmYWYsICA3KTsKLSAgICBNRDVTVEVQKEYxLCBkLCBhLCBiLCBjLCBpblsgNV0rMHg0Nzg3
YzYyYSwgMTIpOwotICAgIE1ENVNURVAoRjEsIGMsIGQsIGEsIGIsIGluWyA2XSsweGE4MzA0NjEz
LCAxNyk7Ci0gICAgTUQ1U1RFUChGMSwgYiwgYywgZCwgYSwgaW5bIDddKzB4ZmQ0Njk1MDEsIDIy
KTsKLSAgICBNRDVTVEVQKEYxLCBhLCBiLCBjLCBkLCBpblsgOF0rMHg2OTgwOThkOCwgIDcpOwot
ICAgIE1ENVNURVAoRjEsIGQsIGEsIGIsIGMsIGluWyA5XSsweDhiNDRmN2FmLCAxMik7Ci0gICAg
TUQ1U1RFUChGMSwgYywgZCwgYSwgYiwgaW5bMTBdKzB4ZmZmZjViYjEsIDE3KTsKLSAgICBNRDVT
VEVQKEYxLCBiLCBjLCBkLCBhLCBpblsxMV0rMHg4OTVjZDdiZSwgMjIpOwotICAgIE1ENVNURVAo
RjEsIGEsIGIsIGMsIGQsIGluWzEyXSsweDZiOTAxMTIyLCAgNyk7Ci0gICAgTUQ1U1RFUChGMSwg
ZCwgYSwgYiwgYywgaW5bMTNdKzB4ZmQ5ODcxOTMsIDEyKTsKLSAgICBNRDVTVEVQKEYxLCBjLCBk
LCBhLCBiLCBpblsxNF0rMHhhNjc5NDM4ZSwgMTcpOwotICAgIE1ENVNURVAoRjEsIGIsIGMsIGQs
IGEsIGluWzE1XSsweDQ5YjQwODIxLCAyMik7Ci0KLSAgICBNRDVTVEVQKEYyLCBhLCBiLCBjLCBk
LCBpblsgMV0rMHhmNjFlMjU2MiwgIDUpOwotICAgIE1ENVNURVAoRjIsIGQsIGEsIGIsIGMsIGlu
WyA2XSsweGMwNDBiMzQwLCAgOSk7Ci0gICAgTUQ1U1RFUChGMiwgYywgZCwgYSwgYiwgaW5bMTFd
KzB4MjY1ZTVhNTEsIDE0KTsKLSAgICBNRDVTVEVQKEYyLCBiLCBjLCBkLCBhLCBpblsgMF0rMHhl
OWI2YzdhYSwgMjApOwotICAgIE1ENVNURVAoRjIsIGEsIGIsIGMsIGQsIGluWyA1XSsweGQ2MmYx
MDVkLCAgNSk7Ci0gICAgTUQ1U1RFUChGMiwgZCwgYSwgYiwgYywgaW5bMTBdKzB4MDI0NDE0NTMs
ICA5KTsKLSAgICBNRDVTVEVQKEYyLCBjLCBkLCBhLCBiLCBpblsxNV0rMHhkOGExZTY4MSwgMTQp
OwotICAgIE1ENVNURVAoRjIsIGIsIGMsIGQsIGEsIGluWyA0XSsweGU3ZDNmYmM4LCAyMCk7Ci0g
ICAgTUQ1U1RFUChGMiwgYSwgYiwgYywgZCwgaW5bIDldKzB4MjFlMWNkZTYsICA1KTsKLSAgICBN
RDVTVEVQKEYyLCBkLCBhLCBiLCBjLCBpblsxNF0rMHhjMzM3MDdkNiwgIDkpOwotICAgIE1ENVNU
RVAoRjIsIGMsIGQsIGEsIGIsIGluWyAzXSsweGY0ZDUwZDg3LCAxNCk7Ci0gICAgTUQ1U1RFUChG
MiwgYiwgYywgZCwgYSwgaW5bIDhdKzB4NDU1YTE0ZWQsIDIwKTsKLSAgICBNRDVTVEVQKEYyLCBh
LCBiLCBjLCBkLCBpblsxM10rMHhhOWUzZTkwNSwgIDUpOwotICAgIE1ENVNURVAoRjIsIGQsIGEs
IGIsIGMsIGluWyAyXSsweGZjZWZhM2Y4LCAgOSk7Ci0gICAgTUQ1U1RFUChGMiwgYywgZCwgYSwg
YiwgaW5bIDddKzB4Njc2ZjAyZDksIDE0KTsKLSAgICBNRDVTVEVQKEYyLCBiLCBjLCBkLCBhLCBp
blsxMl0rMHg4ZDJhNGM4YSwgMjApOwotCi0gICAgTUQ1U1RFUChGMywgYSwgYiwgYywgZCwgaW5b
IDVdKzB4ZmZmYTM5NDIsICA0KTsKLSAgICBNRDVTVEVQKEYzLCBkLCBhLCBiLCBjLCBpblsgOF0r
MHg4NzcxZjY4MSwgMTEpOwotICAgIE1ENVNURVAoRjMsIGMsIGQsIGEsIGIsIGluWzExXSsweDZk
OWQ2MTIyLCAxNik7Ci0gICAgTUQ1U1RFUChGMywgYiwgYywgZCwgYSwgaW5bMTRdKzB4ZmRlNTM4
MGMsIDIzKTsKLSAgICBNRDVTVEVQKEYzLCBhLCBiLCBjLCBkLCBpblsgMV0rMHhhNGJlZWE0NCwg
IDQpOwotICAgIE1ENVNURVAoRjMsIGQsIGEsIGIsIGMsIGluWyA0XSsweDRiZGVjZmE5LCAxMSk7
Ci0gICAgTUQ1U1RFUChGMywgYywgZCwgYSwgYiwgaW5bIDddKzB4ZjZiYjRiNjAsIDE2KTsKLSAg
ICBNRDVTVEVQKEYzLCBiLCBjLCBkLCBhLCBpblsxMF0rMHhiZWJmYmM3MCwgMjMpOwotICAgIE1E
NVNURVAoRjMsIGEsIGIsIGMsIGQsIGluWzEzXSsweDI4OWI3ZWM2LCAgNCk7Ci0gICAgTUQ1U1RF
UChGMywgZCwgYSwgYiwgYywgaW5bIDBdKzB4ZWFhMTI3ZmEsIDExKTsKLSAgICBNRDVTVEVQKEYz
LCBjLCBkLCBhLCBiLCBpblsgM10rMHhkNGVmMzA4NSwgMTYpOwotICAgIE1ENVNURVAoRjMsIGIs
IGMsIGQsIGEsIGluWyA2XSsweDA0ODgxZDA1LCAyMyk7Ci0gICAgTUQ1U1RFUChGMywgYSwgYiwg
YywgZCwgaW5bIDldKzB4ZDlkNGQwMzksICA0KTsKLSAgICBNRDVTVEVQKEYzLCBkLCBhLCBiLCBj
LCBpblsxMl0rMHhlNmRiOTllNSwgMTEpOwotICAgIE1ENVNURVAoRjMsIGMsIGQsIGEsIGIsIGlu
WzE1XSsweDFmYTI3Y2Y4LCAxNik7Ci0gICAgTUQ1U1RFUChGMywgYiwgYywgZCwgYSwgaW5bIDJd
KzB4YzRhYzU2NjUsIDIzKTsKLQotICAgIE1ENVNURVAoRjQsIGEsIGIsIGMsIGQsIGluWyAwXSsw
eGY0MjkyMjQ0LCAgNik7Ci0gICAgTUQ1U1RFUChGNCwgZCwgYSwgYiwgYywgaW5bIDddKzB4NDMy
YWZmOTcsIDEwKTsKLSAgICBNRDVTVEVQKEY0LCBjLCBkLCBhLCBiLCBpblsxNF0rMHhhYjk0MjNh
NywgMTUpOwotICAgIE1ENVNURVAoRjQsIGIsIGMsIGQsIGEsIGluWyA1XSsweGZjOTNhMDM5LCAy
MSk7Ci0gICAgTUQ1U1RFUChGNCwgYSwgYiwgYywgZCwgaW5bMTJdKzB4NjU1YjU5YzMsICA2KTsK
LSAgICBNRDVTVEVQKEY0LCBkLCBhLCBiLCBjLCBpblsgM10rMHg4ZjBjY2M5MiwgMTApOwotICAg
IE1ENVNURVAoRjQsIGMsIGQsIGEsIGIsIGluWzEwXSsweGZmZWZmNDdkLCAxNSk7Ci0gICAgTUQ1
U1RFUChGNCwgYiwgYywgZCwgYSwgaW5bIDFdKzB4ODU4NDVkZDEsIDIxKTsKLSAgICBNRDVTVEVQ
KEY0LCBhLCBiLCBjLCBkLCBpblsgOF0rMHg2ZmE4N2U0ZiwgIDYpOwotICAgIE1ENVNURVAoRjQs
IGQsIGEsIGIsIGMsIGluWzE1XSsweGZlMmNlNmUwLCAxMCk7Ci0gICAgTUQ1U1RFUChGNCwgYywg
ZCwgYSwgYiwgaW5bIDZdKzB4YTMwMTQzMTQsIDE1KTsKLSAgICBNRDVTVEVQKEY0LCBiLCBjLCBk
LCBhLCBpblsxM10rMHg0ZTA4MTFhMSwgMjEpOwotICAgIE1ENVNURVAoRjQsIGEsIGIsIGMsIGQs
IGluWyA0XSsweGY3NTM3ZTgyLCAgNik7Ci0gICAgTUQ1U1RFUChGNCwgZCwgYSwgYiwgYywgaW5b
MTFdKzB4YmQzYWYyMzUsIDEwKTsKLSAgICBNRDVTVEVQKEY0LCBjLCBkLCBhLCBiLCBpblsgMl0r
MHgyYWQ3ZDJiYiwgMTUpOwotICAgIE1ENVNURVAoRjQsIGIsIGMsIGQsIGEsIGluWyA5XSsweGVi
ODZkMzkxLCAyMSk7Ci0KLSAgICBidWZbMF0gKz0gYTsKLSAgICBidWZbMV0gKz0gYjsKLSAgICBi
dWZbMl0gKz0gYzsKLSAgICBidWZbM10gKz0gZDsKLX0KLQotTUQ1OjpNRDUoKQotewotICAgIG1f
YnVmWzBdID0gMHg2NzQ1MjMwMTsKLSAgICBtX2J1ZlsxXSA9IDB4ZWZjZGFiODk7Ci0gICAgbV9i
dWZbMl0gPSAweDk4YmFkY2ZlOwotICAgIG1fYnVmWzNdID0gMHgxMDMyNTQ3NjsKLSAgICBtX2Jp
dHNbMF0gPSAwOwotICAgIG1fYml0c1sxXSA9IDA7Ci0gICAgbWVtc2V0KG1faW4sIDAsIHNpemVv
ZihtX2luKSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90PihtX2luKSAlIHNpemVvZih1aW50MzJfdCkpLCAiYWxpZ25tZW50IGVycm9yIG9mIG1f
aW4iKTsKLX0KLQotdm9pZCBNRDU6OmFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGlucHV0LCBzaXpl
X3QgbGVuZ3RoKQotewotICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZiA9IGlucHV0OwotCi0gICAgLy8g
VXBkYXRlIGJpdGNvdW50Ci0gICAgdWludDMyX3QgdCA9IG1fYml0c1swXTsKLSAgICBtX2JpdHNb
MF0gPSB0ICsgKGxlbmd0aCA8PCAzKTsKLSAgICBpZiAobV9iaXRzWzBdIDwgdCkKLSAgICAgICAg
bV9iaXRzWzFdKys7IC8vIENhcnJ5IGZyb20gbG93IHRvIGhpZ2gKLSAgICBtX2JpdHNbMV0gKz0g
bGVuZ3RoID4+IDI5OwotCi0gICAgdCA9ICh0ID4+IDMpICYgMHgzZjsgLy8gQnl0ZXMgYWxyZWFk
eSBpbiBzaHNJbmZvLT5kYXRhCi0KLSAgICAvLyBIYW5kbGUgYW55IGxlYWRpbmcgb2RkLXNpemVk
IGNodW5rcwotCi0gICAgaWYgKHQpIHsKLSAgICAgICAgdWludDhfdCogcCA9IG1faW4gKyB0Owot
Ci0gICAgICAgIHQgPSA2NCAtIHQ7Ci0gICAgICAgIGlmIChsZW5ndGggPCB0KSB7Ci0gICAgICAg
ICAgICBtZW1jcHkocCwgYnVmLCBsZW5ndGgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIG1lbWNweShwLCBidWYsIHQpOwotICAgICAgICB0b0xpdHRsZUVuZGlhbiht
X2luLCAxNik7Ci0gICAgICAgIE1ENVRyYW5zZm9ybShtX2J1ZiwgcmVpbnRlcnByZXRfY2FzdF9w
dHI8dWludDMyX3QqPihtX2luKSk7IC8vIG1faW4gaXMgNC1ieXRlIGFsaWduZWQuCi0gICAgICAg
IGJ1ZiArPSB0OwotICAgICAgICBsZW5ndGggLT0gdDsKLSAgICB9Ci0KLSAgICAvLyBQcm9jZXNz
IGRhdGEgaW4gNjQtYnl0ZSBjaHVua3MKLQotICAgIHdoaWxlIChsZW5ndGggPj0gNjQpIHsKLSAg
ICAgICAgbWVtY3B5KG1faW4sIGJ1ZiwgNjQpOwotICAgICAgICB0b0xpdHRsZUVuZGlhbihtX2lu
LCAxNik7Ci0gICAgICAgIE1ENVRyYW5zZm9ybShtX2J1ZiwgcmVpbnRlcnByZXRfY2FzdF9wdHI8
dWludDMyX3QqPihtX2luKSk7IC8vIG1faW4gaXMgNC1ieXRlIGFsaWduZWQuCi0gICAgICAgIGJ1
ZiArPSA2NDsKLSAgICAgICAgbGVuZ3RoIC09IDY0OwotICAgIH0KLQotICAgIC8vIEhhbmRsZSBh
bnkgcmVtYWluaW5nIGJ5dGVzIG9mIGRhdGEuCi0gICAgbWVtY3B5KG1faW4sIGJ1ZiwgbGVuZ3Ro
KTsKLX0KLQotdm9pZCBNRDU6OmNoZWNrc3VtKERpZ2VzdCYgZGlnZXN0KQotewotICAgIC8vIENv
bXB1dGUgbnVtYmVyIG9mIGJ5dGVzIG1vZCA2NAotICAgIHVuc2lnbmVkIGNvdW50ID0gKG1fYml0
c1swXSA+PiAzKSAmIDB4M0Y7Ci0KLSAgICAvLyBTZXQgdGhlIGZpcnN0IGNoYXIgb2YgcGFkZGlu
ZyB0byAweDgwLiAgVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXJlIGlzCi0gICAgLy8gYWx3YXlzIGF0
IGxlYXN0IG9uZSBieXRlIGZyZWUKLSAgICB1aW50OF90KiBwID0gbV9pbiArIGNvdW50OwotICAg
ICpwKysgPSAweDgwOwotCi0gICAgLy8gQnl0ZXMgb2YgcGFkZGluZyBuZWVkZWQgdG8gbWFrZSA2
NCBieXRlcwotICAgIGNvdW50ID0gNjQgLSAxIC0gY291bnQ7Ci0KLSAgICAvLyBQYWQgb3V0IHRv
IDU2IG1vZCA2NAotICAgIGlmIChjb3VudCA8IDgpIHsKLSAgICAgICAgLy8gVHdvIGxvdHMgb2Yg
cGFkZGluZzogIFBhZCB0aGUgZmlyc3QgYmxvY2sgdG8gNjQgYnl0ZXMKLSAgICAgICAgbWVtc2V0
KHAsIDAsIGNvdW50KTsKLSAgICAgICAgdG9MaXR0bGVFbmRpYW4obV9pbiwgMTYpOwotICAgICAg
ICBNRDVUcmFuc2Zvcm0obV9idWYsIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQzMl90ICo+KG1f
aW4pKTsgLy8gbV9pbiBpcyA0LWJ5dGUgYWxpZ25lZC4KLQotICAgICAgICAvLyBOb3cgZmlsbCB0
aGUgbmV4dCBibG9jayB3aXRoIDU2IGJ5dGVzCi0gICAgICAgIG1lbXNldChtX2luLCAwLCA1Nik7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUGFkIGJsb2NrIHRvIDU2IGJ5dGVzCi0gICAgICAg
IG1lbXNldChwLCAwLCBjb3VudCAtIDgpOwotICAgIH0KLSAgICB0b0xpdHRsZUVuZGlhbihtX2lu
LCAxNCk7Ci0KLSAgICAvLyBBcHBlbmQgbGVuZ3RoIGluIGJpdHMgYW5kIHRyYW5zZm9ybQotICAg
IG1lbWNweShtX2luICsgNTYsIG1fYml0cywgc2l6ZW9mKG1fYml0cykpOwotCi0gICAgTUQ1VHJh
bnNmb3JtKG1fYnVmLCByZWludGVycHJldF9jYXN0X3B0cjx1aW50MzJfdCo+KG1faW4pKTsKLSAg
ICB0b0xpdHRsZUVuZGlhbihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2J1ZiksIDQpOwot
Ci0gICAgLy8gTm93LCBtX2J1ZiBjb250YWlucyBjaGVja3N1bSByZXN1bHQuCi0gICAgdWludDhf
dCogbUJ1ZlVJbnQ4ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obV9idWYpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgaGFzaFNpemU7ICsraSkKLSAgICAgICAgZGlnZXN0W2ldID0g
bUJ1ZlVJbnQ4W2ldOwotCi0gICAgLy8gSW4gY2FzZSBpdCdzIHNlbnNpdGl2ZQotICAgIG1lbXNl
dChtX2J1ZiwgMCwgc2l6ZW9mKG1fYnVmKSk7Ci0gICAgbWVtc2V0KG1fYml0cywgMCwgc2l6ZW9m
KG1fYml0cykpOwotICAgIG1lbXNldChtX2luLCAwLCBzaXplb2YobV9pbikpOwotfQotCi0jZW5k
aWYKLQotfSAvLyBuYW1lc3BhY2UgV1RGCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV1RG
L3d0Zi9NRDUuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNl
L1dURi93dGYvTUQ1LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTUQ1LmgJKHJldmlz
aW9uIDI2MzcwNSkKKysrIFNvdXJjZS9XVEYvd3RmL01ENS5oCShub25leGlzdGVudCkKQEAgLTEs
NzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8Q29tbW9uQ3J5cHRv
L0NvbW1vbkRpZ2VzdC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBNRDUg
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBNRDUoKTsKLQotICAgIHZvaWQgYWRkQnl0ZXMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBpbnB1dCkKLSAgICB7Ci0gICAgICAgIGFkZEJ5dGVzKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6
ZSgpKTsKLSAgICB9Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkQnl0ZXMoY29uc3Qg
dWludDhfdCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOwotCi0gICAgLy8gU2l6ZSBvZiB0aGUgU0hB
MSBoYXNoCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGhh
c2hTaXplID0gMTY7Ci0KLSAgICAvLyB0eXBlIGZvciBjb21wdXRpbmcgTUQ1IGhhc2gKLSAgICB0
eXBlZGVmIHN0ZDo6YXJyYXk8dWludDhfdCwgaGFzaFNpemU+IERpZ2VzdDsKLQotICAgIC8vIGNo
ZWNrc3VtIGhhcyBhIHNpZGUgZWZmZWN0IG9mIHJlc2V0dGluZyB0aGUgc3RhdGUgb2YgdGhlIG9i
amVjdC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjaGVja3N1bShEaWdlc3QmKTsKLQot
cHJpdmF0ZToKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDQ19NRDVfQ1RYIG1fY29udGV4dDsK
LSNlbHNlCi0gICAgdWludDMyX3QgbV9idWZbNF07Ci0gICAgdWludDMyX3QgbV9iaXRzWzJdOwot
ICAgIHVpbnQ4X3QgbV9pbls2NF07Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgot
Ci11c2luZyBXVEY6Ok1ENTsKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XVEYvd3RmL01E
NS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRp
dmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMjYzNzA1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMjAtMDYtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgV1RGOjpNRDUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc2NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpnZW5l
cmF0ZUJhc2VGaWxlbmFtZSk6CisKIDIwMjAtMDYtMjkgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRz
dWhhcnUub2h6ZWtpQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1NUUkVBTVNf
QVBJIGNvbXBpbGF0aW9uIGZsYWcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCShyZXZpc2lvbiAyNjM3
MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIldlYlNv
Y2tldC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL01ENS5oPgogI2luY2x1
ZGUgPHd0Zi9TSEExLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9TdHJpbmdFeHRyYXMuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAkocmV2aXNpb24gMjYzNzA1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1i
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvTUQ1Lmg+CisjaW5jbHVkZSA8d3RmL1NIQTEuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMTEsMTUgKzIxMSwxNSBAQCB2b2lkIEN1cmxDYWNoZUVu
dHJ5OjpkaWRGaW5pc2hMb2FkaW5nKCkKIAogdm9pZCBDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVC
YXNlRmlsZW5hbWUoY29uc3QgQ1N0cmluZyYgdXJsKQogewotICAgIE1ENSBtZDU7Ci0gICAgbWQ1
LmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHVybC5kYXRhKCkpLCB1
cmwubGVuZ3RoKCkpOworICAgIFNIQTEgc2hhMTsKKyAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHVybC5kYXRhKCkpLCB1cmwubGVuZ3RoKCkpOwogCi0g
ICAgTUQ1OjpEaWdlc3Qgc3VtOwotICAgIG1kNS5jaGVja3N1bShzdW0pOworICAgIFNIQTE6OkRp
Z2VzdCBzdW07CisgICAgc2hhMS5jb21wdXRlSGFzaChzdW0pOwogICAgIHVpbnQ4X3QqIHJhd2Rh
dGEgPSBzdW0uZGF0YSgpOwogCiAgICAgU3RyaW5nQnVpbGRlciBiYXNlTmFtZUJ1aWxkZXI7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBNRDU6Omhhc2hTaXplOyBpKyspCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCAxNjsgaSsrKQogICAgICAgICBiYXNlTmFtZUJ1aWxkZXIuYXBwZW5k
KGhleChyYXdkYXRhW2ldLCBMb3dlcmNhc2UpKTsKICAgICBtX2Jhc2VuYW1lID0gYmFzZU5hbWVC
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM3MTEpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNi0yOSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBXVEY6Ok1E
NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNzY2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9QbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L01ENS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52
b2NhdGlvbkNHLmNwcDoKKyAgICAgICAgKFdUUjo6Y29tcHV0ZVNIQTFIYXNoU3RyaW5nRm9yQ29u
dGV4dCk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFy
ZVdpdGhFeHBlY3RlZCk6CisgICAgICAgIChXVFI6OmNvbXB1dGVNRDVIYXNoU3RyaW5nRm9yQ29u
dGV4dCk6IERlbGV0ZWQuCisKIDIwMjAtMDYtMjkgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRzdWhh
cnUub2h6ZWtpQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1NUUkVBTVNfQVBJ
IGNvbXBpbGF0aW9uIGZsYWcKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1
cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1
cHBvcnQuY3BwCShyZXZpc2lvbiAyNjM3MDUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9QaXhl
bER1bXBTdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIGR1
bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4CiAgICAgCiAgICAgLy8gQ29tcHV0ZSB0
aGUgaGFzaCBvZiB0aGUgYml0bWFwIGNvbnRleHQgcGl4ZWxzCiAgICAgY2hhciBhY3R1YWxIYXNo
WzMzXTsKLSAgICBjb21wdXRlTUQ1SGFzaFN0cmluZ0ZvckJpdG1hcENvbnRleHQoY29udGV4dC5n
ZXQoKSwgYWN0dWFsSGFzaCk7CisgICAgY29tcHV0ZVNIQTFIYXNoU3RyaW5nRm9yQml0bWFwQ29u
dGV4dChjb250ZXh0LmdldCgpLCBhY3R1YWxIYXNoKTsKICAgICBmcHJpbnRmKHRlc3RSZXN1bHQs
ICJcbkFjdHVhbEhhc2g6ICVzXG4iLCBhY3R1YWxIYXNoKTsgLy8gRklYTUU6IE5vIG5lZWQgZm9y
IHRoZSBsZWFkaW5nIG5ld2xpbmUuCiAKICAgICAvLyBDaGVjayB0aGUgY29tcHV0ZWQgaGFzaCBh
Z2FpbnN0IHRoZSBleHBlY3RlZCBvbmUgYW5kIGR1bXAgaW1hZ2Ugb24gbWlzbWF0Y2gKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0LmgJKHJldmlzaW9uIDI2MzcwNSkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNyArMzMsNyBAQAogCiBjbGFzcyBCaXRtYXBDb250ZXh0OwogCi12b2lkIGNvbXB1
dGVNRDVIYXNoU3RyaW5nRm9yQml0bWFwQ29udGV4dChCaXRtYXBDb250ZXh0KiwgY2hhciBoYXNo
U3RyaW5nWzMzXSk7Cit2b2lkIGNvbXB1dGVTSEExSGFzaFN0cmluZ0ZvckJpdG1hcENvbnRleHQo
Qml0bWFwQ29udGV4dCosIGNoYXIgaGFzaFN0cmluZ1szM10pOwogUmVmUHRyPEJpdG1hcENvbnRl
eHQ+IGNyZWF0ZVBhZ2VkQml0bWFwQ29udGV4dCgpOwogUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNy
ZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVuLCBib29sIGluY3JlbWVu
dGFsUmVwYWludCwgYm9vbCBzd2VlcEhvcml6b250YWxseSwgYm9vbCBkcmF3U2VsZWN0aW9uUmVj
dCk7CiB2b2lkIGR1bXBCaXRtYXAoQml0bWFwQ29udGV4dCosIGNvbnN0IGNoYXIqIGNoZWNrc3Vt
KTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtV2luLmNtYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAy
NjM3MDUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9QbGF0Zm9ybVdpbi5jbWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMTEsNyArMTEsNiBAQCBsaXN0KEFQUEVORCBEdW1wUmVuZGVyVHJlZV9TT1VS
Q0VTCiAgICAgd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAogICAgIHdpbi9HQ0NvbnRyb2xsZXJX
aW4uY3BwCiAgICAgd2luL0hpc3RvcnlEZWxlZ2F0ZS5jcHAKLSAgICB3aW4vTUQ1LmNwcAogICAg
IHdpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcAogICAgIHdpbi9Qb2xpY3lEZWxlZ2F0ZS5jcHAK
ICAgICB3aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9jYWlyby9QaXhlbER1bXBTdXBwb3J0Q2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2NhaXJvL1BpeGVsRHVtcFN1cHBvcnRDYWlyby5jcHAJKHJldmlzaW9u
IDI2MzcwNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NhaXJvL1BpeGVsRHVtcFN1cHBvcnRD
YWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgot
I2luY2x1ZGUgPHd0Zi9NRDUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyB2b2lkIHByaW50UE5HKGNhaXJvX3N1
cmZhY2VfdCogaW0KICAgICBwcmludFBORyhkYXRhLCBkYXRhTGVuZ3RoLCBjaGVja3N1bSk7CiB9
CiAKLXZvaWQgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JCaXRtYXBDb250ZXh0KEJpdG1hcENvbnRl
eHQqIGNvbnRleHQsIGNoYXIgaGFzaFN0cmluZ1szM10pCit2b2lkIGNvbXB1dGVTSEExSGFzaFN0
cmluZ0ZvckJpdG1hcENvbnRleHQoQml0bWFwQ29udGV4dCogY29udGV4dCwgY2hhciBoYXNoU3Ry
aW5nWzMzXSkKIHsKICAgICBjYWlyb190KiBiaXRtYXBDb250ZXh0ID0gY29udGV4dC0+Y2Fpcm9D
b250ZXh0KCk7CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9fZ2V0X3Rhcmdl
dChiaXRtYXBDb250ZXh0KTsKQEAgLTcyLDE0ICs3MiwxNCBAQCB2b2lkIGNvbXB1dGVNRDVIYXNo
U3RyaW5nRm9yQml0bWFwQ29udGV4CiAgICAgc2l6ZV90IHBpeGVsc1dpZGUgPSBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsKICAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7CiAKLSAgICBNRDUgbWQ1Q29u
dGV4dDsKKyAgICBTSEExIHNoYTE7CiAgICAgdW5zaWduZWQgY2hhciogYml0bWFwRGF0YSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1
cmZhY2UpKTsKICAgICBmb3IgKHVuc2lnbmVkIHJvdyA9IDA7IHJvdyA8IHBpeGVsc0hpZ2g7IHJv
dysrKSB7Ci0gICAgICAgIG1kNUNvbnRleHQuYWRkQnl0ZXMoYml0bWFwRGF0YSwgNCAqIHBpeGVs
c1dpZGUpOworICAgICAgICBzaGExLmFkZEJ5dGVzKGJpdG1hcERhdGEsIDQgKiBwaXhlbHNXaWRl
KTsKICAgICAgICAgYml0bWFwRGF0YSArPSBieXRlc1BlclJvdzsKICAgICB9Ci0gICAgTUQ1OjpE
aWdlc3QgaGFzaDsKLSAgICBtZDVDb250ZXh0LmNoZWNrc3VtKGhhc2gpOworICAgIFNIQTE6OkRp
Z2VzdCBoYXNoOworICAgIHNoYTEuY29tcHV0ZUhhc2goaGFzaCk7CiAKICAgICBzbnByaW50Ziho
YXNoU3RyaW5nLCAzMywgIiUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngl
MDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAogICAgICAgICBoYXNoWzBdLCBoYXNoWzFdLCBoYXNo
WzJdLCBoYXNoWzNdLCBoYXNoWzRdLCBoYXNoWzVdLCBoYXNoWzZdLCBoYXNoWzddLApJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCShyZXZp
c2lvbiAyNjM3MDUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0
Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksOSBAQAogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU0hBMS5oPgogCi0jaWYgUExBVEZPUk0oV0lOKQotI2lu
Y2x1ZGUgIk1ENS5oIgotI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2luY2x1ZGUgPE1vYmlsZUNvcmVTZXJ2aWNlcy9VVENvcmVUeXBlcy5oPgog
I2RlZmluZSBDT01NT05fRElHRVNUX0ZPUl9PUEVOU1NMCiAjaW5jbHVkZSA8Q29tbW9uQ3J5cHRv
L0NvbW1vbkRpZ2VzdC5oPgpAQCAtNzEsNyArNzAsNyBAQCBzdGF0aWMgdm9pZCBwcmludFBORyhD
R0ltYWdlUmVmIGltYWdlLCBjCiAgICAgcHJpbnRQTkcoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KGRhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFMZW5ndGgpLCBjaGVja3N1
bSk7CiB9CiAKLXZvaWQgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JCaXRtYXBDb250ZXh0KEJpdG1h
cENvbnRleHQqIGNvbnRleHQsIGNoYXIgaGFzaFN0cmluZ1szM10pCit2b2lkIGNvbXB1dGVTSEEx
SGFzaFN0cmluZ0ZvckJpdG1hcENvbnRleHQoQml0bWFwQ29udGV4dCogY29udGV4dCwgY2hhciBo
YXNoU3RyaW5nWzMzXSkKIHsKICAgICBDR0NvbnRleHRSZWYgYml0bWFwQ29udGV4dCA9IGNvbnRl
eHQtPmNnQ29udGV4dCgpOwogCkBAIC04MSw4ICs4MCw3IEBAIHZvaWQgY29tcHV0ZU1ENUhhc2hT
dHJpbmdGb3JCaXRtYXBDb250ZXgKICAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0JpdG1hcENv
bnRleHRHZXRCeXRlc1BlclJvdyhiaXRtYXBDb250ZXh0KTsKIAogICAgIC8vIFdlIG5lZWQgdG8g
c3dhcCB0aGUgYnl0ZXMgdG8gZW5zdXJlIGNvbnNpc3RlbnQgaGFzaGVzIGluZGVwZW5kZW50bHkg
b2YgZW5kaWFubmVzcwotICAgIE1ENV9DVFggbWQ1Q29udGV4dDsKLSAgICBNRDVfSW5pdCgmbWQ1
Q29udGV4dCk7CisgICAgU0hBMSBzaGExOwogICAgIHVuc2lnbmVkIGNoYXIqIGJpdG1hcERhdGEg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oQ0dCaXRtYXBDb250ZXh0R2V0RGF0YShiaXRt
YXBDb250ZXh0KSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKChDR0JpdG1hcENvbnRl
eHRHZXRCaXRtYXBJbmZvKGJpdG1hcENvbnRleHQpICYga0NHQml0bWFwQnl0ZU9yZGVyTWFzaykg
PT0ga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpIHsKQEAgLTkwLDE5ICs4OCwxOSBAQCB2b2lkIGNv
bXB1dGVNRDVIYXNoU3RyaW5nRm9yQml0bWFwQ29udGV4CiAgICAgICAgICAgICB1aW50MzJfdCBi
dWZmZXJbcGl4ZWxzV2lkZV07CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNvbHVtbiA9IDA7
IGNvbHVtbiA8IHBpeGVsc1dpZGU7IGNvbHVtbisrKQogICAgICAgICAgICAgICAgIGJ1ZmZlcltj
b2x1bW5dID0gT1NSZWFkTGl0dGxlSW50MzIoYml0bWFwRGF0YSwgNCAqIGNvbHVtbik7Ci0gICAg
ICAgICAgICBNRDVfVXBkYXRlKCZtZDVDb250ZXh0LCBidWZmZXIsIDQgKiBwaXhlbHNXaWRlKTsK
KyAgICAgICAgICAgIHNoYTEuYWRkQnl0ZXMoYnVmZmVyLCA0ICogcGl4ZWxzV2lkZSk7CiAgICAg
ICAgICAgICBiaXRtYXBEYXRhICs9IGJ5dGVzUGVyUm93OwogICAgICAgICB9CiAgICAgfSBlbHNl
CiAjZW5kaWYKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgcm93ID0gMDsgcm93IDwgcGl4
ZWxzSGlnaDsgcm93KyspIHsKLSAgICAgICAgICAgIE1ENV9VcGRhdGUoJm1kNUNvbnRleHQsIGJp
dG1hcERhdGEsIDQgKiBwaXhlbHNXaWRlKTsKKyAgICAgICAgICAgIHNoYTEuYWRkQnl0ZXMoYml0
bWFwRGF0YSwgNCAqIHBpeGVsc1dpZGUpOwogICAgICAgICAgICAgYml0bWFwRGF0YSArPSBieXRl
c1BlclJvdzsKICAgICAgICAgfQogICAgIH0KLSAgICB1bnNpZ25lZCBjaGFyIGhhc2hbMTZdOwot
ICAgIE1ENV9GaW5hbChoYXNoLCAmbWQ1Q29udGV4dCk7CisgICAgU0hBMTo6RGlnZXN0IGhhc2g7
CisgICAgc2hhMS5jb21wdXRlSGFzaChoYXNoKTsKIAogICAgIGhhc2hTdHJpbmdbMF0gPSAnXDAn
OwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7IGkrKykKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9NRDUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9NRDUuY3BwCShyZXZpc2lvbiAyNjM3MDUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
TUQ1LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJNRDUuaCIKLQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLQotdHlwZWRlZiB2b2lkIChXSU5B
UEkqaW5pdFB0cikoTUQ1X0NUWCopOwotdHlwZWRlZiB2b2lkIChXSU5BUEkqdXBkYXRlUHRyKShN
RDVfQ1RYKiwgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKTsKLXR5cGVkZWYgdm9pZCAoV0lOQVBJ
KmZpbmFsUHRyKShNRDVfQ1RYKik7Ci0KLXN0YXRpYyBITU9EVUxFIGNyeXB0RExMKCkKLXsKLSAg
ICBzdGF0aWMgSE1PRFVMRSBtb2R1bGUgPSBMb2FkTGlicmFyeVcoTCJDcnlwdGRsbC5kbGwiKTsK
LSAgICByZXR1cm4gbW9kdWxlOwotfQotCi1zdGF0aWMgaW5pdFB0ciBpbml0KCkKLXsKLSAgICBz
dGF0aWMgaW5pdFB0ciBwdHIgPSByZWludGVycHJldF9jYXN0PGluaXRQdHI+KEdldFByb2NBZGRy
ZXNzKGNyeXB0RExMKCksICJNRDVJbml0IikpOwotICAgIHJldHVybiBwdHI7Ci19Ci0KLXN0YXRp
YyB1cGRhdGVQdHIgdXBkYXRlKCkKLXsKLSAgICBzdGF0aWMgdXBkYXRlUHRyIHB0ciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dXBkYXRlUHRyPihHZXRQcm9jQWRkcmVzcyhjcnlwdERMTCgpLCAiTUQ1VXBk
YXRlIikpOwotICAgIHJldHVybiBwdHI7Ci19Ci0KLXN0YXRpYyBmaW5hbFB0ciBmaW5hbCgpCi17
Ci0gICAgc3RhdGljIGZpbmFsUHRyIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmluYWxQdHI+KEdl
dFByb2NBZGRyZXNzKGNyeXB0RExMKCksICJNRDVGaW5hbCIpKTsKLSAgICByZXR1cm4gcHRyOwot
fQotCi12b2lkIE1ENV9Jbml0KE1ENV9DVFgqIGNvbnRleHQpCi17Ci0gICAgaW5pdCgpKGNvbnRl
eHQpOwotfQotCi12b2lkIE1ENV9VcGRhdGUoTUQ1X0NUWCogY29udGV4dCwgdW5zaWduZWQgY2hh
ciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICB1cGRhdGUoKShjb250ZXh0LCBpbnB1
dCwgbGVuZ3RoKTsKLX0KLQotdm9pZCBNRDVfRmluYWwodW5zaWduZWQgY2hhciBoYXNoWzE2XSwg
TUQ1X0NUWCogY29udGV4dCkKLXsKLSAgICBmaW5hbCgpKGNvbnRleHQpOwotCi0gICAgZm9yIChp
bnQgaSA9IDA7IGkgPCAxNjsgKytpKQotICAgICAgICBoYXNoW2ldID0gY29udGV4dC0+ZGlnZXN0
W2ldOwotfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL01E
NS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5h
dGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vTUQ1LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L01ENS5oCShyZXZpc2lvbiAyNjM3MDUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1
LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1ENV9oCi0jZGVmaW5lIE1ENV9oCi0K
LXR5cGVkZWYgdW5zaWduZWQgbG9uZyBVTE9ORzsKLQotc3RydWN0IE1ENV9DVFggewotICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICBVTE9ORyBpWzJdOwotICAgIFVMT05H
IGJ1Zls0XTsKLSAgICB1bnNpZ25lZCBjaGFyIGluWzY0XTsKLSAgICB1bnNpZ25lZCBjaGFyIGRp
Z2VzdFsxNl07Ci19OwotCi12b2lkIE1ENV9Jbml0KE1ENV9DVFgqKTsKLXZvaWQgTUQ1X1VwZGF0
ZShNRDVfQ1RYKiwgdW5zaWduZWQgY2hhciogaW5wdXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci12b2lk
IE1ENV9GaW5hbCh1bnNpZ25lZCBjaGFyIGhhc2hbMTZdLCBNRDVfQ1RYKik7Ci0KLSNlbmRpZiAv
LyBNRDVfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL01E
NS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRp
dmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnREaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1BpeGVsRHVtcFN1cHBvcnREaXJlY3QyRC5jcHAJKHJldmlz
aW9uIDI2MzcwNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBwb3J0
RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAi
UGl4ZWxEdW1wU3VwcG9ydERpcmVjdDJELmgiCiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5o
IgotI2luY2x1ZGUgIk1ENS5oIgogI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQuaCIKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KQEAgLTY0LDcgKzYzLDcgQEAgc3Rh
dGljIHZvaWQgcHJpbnRQTkcoSUQyRDFCaXRtYXAqIGltYWdlLAogICAgIC8vIE5vdCBpbXBsZW1l
bnRlZC4KIH0KIAotdm9pZCBjb21wdXRlTUQ1SGFzaFN0cmluZ0ZvckJpdG1hcENvbnRleHQoQml0
bWFwQ29udGV4dCogY29udGV4dCwgY2hhciBoYXNoU3RyaW5nWzMzXSkKK3ZvaWQgY29tcHV0ZVNI
QTFIYXNoU3RyaW5nRm9yQml0bWFwQ29udGV4dChCaXRtYXBDb250ZXh0KiBjb250ZXh0LCBjaGFy
IGhhc2hTdHJpbmdbMzNdKQogewogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVT
RURfUEFSQU0oaGFzaFN0cmluZyk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDI2MzcwNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDYgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAg
IFRlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAKICAgICBUZXN0cy9XVEYvTG9jay5jcHAKICAgICBU
ZXN0cy9XVEYvTG9nZ2VyLmNwcAotICAgIFRlc3RzL1dURi9NRDUuY3BwCiAgICAgVGVzdHMvV1RG
L01hcmthYmxlLmNwcAogICAgIFRlc3RzL1dURi9NYXRoRXh0cmFzLmNwcAogICAgIFRlc3RzL1dU
Ri9NZWRpYVRpbWUuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYz
NzA1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU0Niw3ICs1NDYsNiBAQAogCQk3QzgzREVF
MDFEMEE1OTBDMDBGRUJDRjMgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjZGQUZEMjE1RTU3NzUy
MDBGNjFENUIgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAgKi87IH07CiAJCTdDODNE
RUU4MUQwQTU5MEMwMEZFQkNGMyAvKiBMaXN0SGFzaFNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjMwMEIxNzE2NzU1Q0Q5MDA2Njg4NkQgLyog
TGlzdEhhc2hTZXQuY3BwICovOyB9OwogCQk3QzgzREVFRDFEMEE1OTBDMDBGRUJDRjMgLyogTWF0
aEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCNDAzOUY5QzE1RTZEOEIzMDA3MjU1RDYgLyogTWF0aEV4dHJhcy5jcHAgKi87IH07Ci0JCTdD
ODNERUVGMUQwQTU5MEMwMEZFQkNGMyAvKiBNRDUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1MzkzQzcxNzU3QkE5NzAwQzA3MTIzIC8qIE1ENS5j
cHAgKi87IH07CiAJCTdDODNERUYxMUQwQTU5MEMwMEZFQkNGMyAvKiBNZWRpYVRpbWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q1NDk3QjMxNTg1
N0YwQzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgKi87IH07CiAJCTdDODNERUY2MUQwQTU5MEMw
MEZFQkNGMyAvKiBNZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzZDNENFMTQxMDM0QUQwMDVCN0YwQyAvKiBNZXRhQWxsb2Nh
dG9yLmNwcCAqLzsgfTsKIAkJN0M4M0RFRkUxRDBBNTkwQzAwRkVCQ0YzIC8qIE5ha2VkUHRyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjZGNzRF
MUIyQkE0NEUwMDlFNDkyMiAvKiBOYWtlZFB0ci5jcHAgKi87IH07CkBAIC0yNjE0LDcgKzI2MTMs
NiBAQAogCQlDRDJEMEQxOTIxMzQ2NTU2MDAxOEM3ODQgLyogTm93UGxheWluZy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE5vd1BsYXlpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEMzA2NURGMjE2NTY4MkUwMEU4OTVERiAvKiBWaWRlb1F1YWxpdHlEaXNwbGF5Q29tcG9z
aXRpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb1F1YWxpdHlEaXNwbGF5Q29tcG9z
aXRpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMzIxQjAzMUUzQTg0Qjcw
MEVCMjFDOCAvKiB2aWRlby13aXRoLW11dGVkLWF1ZGlvLWFuZC13ZWJhdWRpby5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gInZpZGVvLXdpdGgtbXV0ZWQtYXVkaW8tYW5kLXdlYmF1
ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRDUzOTNDNzE3NTdCQTk3
MDBDMDcxMjMgLyogTUQ1LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1ENS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTM5M0M5MTc1N0JBQzQw
MEMwNzEyMyAvKiBTSEExLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNIQTEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0NTFFOTE5RTQxRjlE
MDAxNjkzNkYgLyogQ1NTUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENTU1BhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5
N0IzMTU4NTdGMEMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQwNTgsNyArNDA1Niw2IEBACiAJCQkJQTU3RDU0RjUxRjMzOTVEMDAwQTk3QUE3IC8q
IExvZ2dlci5oICovLAogCQkJCUVDNzlGMTY4QkU0NTRFNTc5RTQxN0IwNSAvKiBNYXJrYWJsZS5j
cHAgKi8sCiAJCQkJQjQwMzlGOUMxNUU2RDhCMzAwNzI1NUQ2IC8qIE1hdGhFeHRyYXMuY3BwICov
LAotCQkJCUNENTM5M0M3MTc1N0JBOTcwMEMwNzEyMyAvKiBNRDUuY3BwICovLAogCQkJCUNENTQ5
N0IzMTU4NTdGMEMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovLAogCQkJCTBGQzZDNENFMTQx
MDM0QUQwMDVCN0YwQyAvKiBNZXRhQWxsb2NhdG9yLmNwcCAqLywKIAkJCQk5M0E0MjdBQzE4MERB
NjBGMDBDRDI0RDcgLyogTW92ZU9ubHkuaCAqLywKQEAgLTQ3NzEsNyArNDc2OCw2IEBACiAJCQkJ
QTU3RDU0RjYxRjMzOTVEMDAwQTk3QUE3IC8qIExvZ2dlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0OTA5RUUzQTJEMDk0ODBDODg5ODJENTYgLyogTWFya2FibGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RFRUQxRDBBNTkwQzAwRkVCQ0YzIC8qIE1hdGhFeHRyYXMuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJN0M4M0RFRUYxRDBBNTkwQzAwRkVCQ0YzIC8qIE1ENS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzgzREVGMTFEMEE1OTBDMDBGRUJDRjMgLyogTWVkaWFUaW1lLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERUY2MUQwQTU5MEMwMEZFQkNGMyAvKiBNZXRhQWxsb2NhdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFNzg3MDVGMjEwN0FCOTgwMDUzQUM2NyAvKiBNb3Zl
T25seUxpZmVjeWNsZUxvZ2dlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTQ4NzUsNyArNDg3MSw2
IEBACiAJCQkJMDcxMURGNTIyMjZBOTVGQzAwM0REMkY3IC8qIEFWRm91bmRhdGlvblNvZnRMaW5r
VGVzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUI1MUE0MTFBN0UwMDQ0N0M0QyAvKiBC
YWNrRm9yd2FyZExpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQzdGRUIyMDIwN0MwRjJFMDBE
MjMyNzggLyogQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0QwMzcwRTMy
NEE0NEQ5NjAwQkEzQ0FFIC8qIE1lZGlhTG9hZGluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMx
NUNCQjMwMjNGMUZGMUEwMDMwMENDNyAvKiBCYWNrbGlnaHRMZXZlbE5vdGlmaWNhdGlvbi5tbSBp
biBTb3VyY2VzICovLAogCQkJCUMxNjkyRENBMjNEMTBEQUUwMDZFODhGNyAvKiBCYXR0ZXJ5Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzc0QjdBNjAxREYzNkVFRTAwQUNDQjZDIC8qIEJ1bmRsZUVk
aXRpbmdEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLApAQCAtNTA5Nyw2ICs1MDkyLDcgQEAKIAkJ
CQkwNzZFNTA3RjFGNDUxM0Q2MDA2RTlGNUEgLyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDRTE4NjY0OTFGNzJFOEYxMDBBMENBQjYgLyogTWFya2VkVGV4dC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwN0NDN0RGRTIyNjYzMzA5MDBFMzkxODEgLyogTWVkaWFCdWZmZXJpbmdQb2xp
Y3kubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRDAzNzBFMzI0QTQ0RDk2MDBCQTNDQUUgLyogTWVk
aWFMb2FkaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMzE1OTgxRUQ1MzY1MTAwOUY2MEQz
IC8qIE1lZGlhUGxheWJhY2tTbGVlcEFzc2VydGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNE
Qzk0NDJFMUVGMUZDMDgwMDU5QzNDNCAvKiBNZWRpYVN0cmVhbVRyYWNrRGV0YWNoZWQubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1MUJFOUU2NjIzNzYwODlGMDBCNEUxMTcgLyogTWVkaWFUeXBlLm1t
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NRDUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01ENS5jcHAJ
KHJldmlzaW9uIDI2MzcwNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01ENS5j
cHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogVGhpcyBjb2RlIGltcGxl
bWVudHMgdGhlIE1ENSBtZXNzYWdlLWRpZ2VzdCBhbGdvcml0aG0uCi0gKiBUaGUgYWxnb3JpdGht
IGlzIGR1ZSB0byBSb24gUml2ZXN0LiAgVGhpcyBjb2RlIHdhcwotICogd3JpdHRlbiBieSBDb2xp
biBQbHVtYiBpbiAxOTkzLCBubyBjb3B5cmlnaHQgaXMgY2xhaW1lZC4KLSAqIFRoaXMgY29kZSBp
cyBpbiB0aGUgcHVibGljIGRvbWFpbjsgZG8gd2l0aCBpdCB3aGF0IHlvdSB3aXNoLgotICoKLSAq
IEVxdWl2YWxlbnQgY29kZSBpcyBhdmFpbGFibGUgZnJvbSBSU0EgRGF0YSBTZWN1cml0eSwgSW5j
LgotICogVGhpcyBjb2RlIGhhcyBiZWVuIHRlc3RlZCBhZ2FpbnN0IHRoYXQsIGFuZCBpcyBlcXVp
dmFsZW50LAotICogZXhjZXB0IHRoYXQgeW91IGRvbid0IG5lZWQgdG8gaW5jbHVkZSB0d28gcGFn
ZXMgb2YgbGVnYWxlc2UKLSAqIHdpdGggZXZlcnkgY29weS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSA8d3RmL01ENS5oPgotI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKLQotc3RhdGljIHZvaWQgZXhwZWN0TUQ1KENTdHJpbmcgaW5wdXQsIENTdHJpbmcgZXhw
ZWN0ZWQpCi17Ci0gICAgTUQ1IG1kNTsKLSAgICBtZDUuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQubGVuZ3RoKCkpOwotICAgIE1E
NTo6RGlnZXN0IGRpZ2VzdDsKLSAgICBtZDUuY2hlY2tzdW0oZGlnZXN0KTsKLSAgICBjaGFyKiBi
dWYgPSAwOwotICAgIENTdHJpbmcgYWN0dWFsID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZCgz
MiwgYnVmKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE1ENTo6aGFzaFNpemU7IGkrKywg
YnVmICs9IDIpCi0gICAgICAgIHNucHJpbnRmKGJ1ZiwgMywgIiUwMngiLCBkaWdlc3RbaV0pOwot
Ci0gICAgQVNTRVJUX0VRKGV4cGVjdGVkLmxlbmd0aCgpLCBhY3R1YWwubGVuZ3RoKCkpOwotICAg
IEFTU0VSVF9TVFJFUShleHBlY3RlZC5kYXRhKCksIGFjdHVhbC5kYXRhKCkpOwotfQotCi1URVNU
KFdURl9NRDUsIENvbXB1dGF0aW9uKQotewotICAgIC8vIE1ENSBUZXN0IHN1aXRlIGZyb20gaHR0
cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMTMyMS50eHQuCi0gICAgZXhwZWN0TUQ1KCIiLCAiZDQx
ZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UiKTsKLSAgICBleHBlY3RNRDUoImEiLCAiMGNj
MTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjEiKTsKLSAgICBleHBlY3RNRDUoImFiYyIsICI5
MDAxNTA5ODNjZDI0ZmIwZDY5NjNmN2QyOGUxN2Y3MiIpOwotICAgIGV4cGVjdE1ENSgibWVzc2Fn
ZSBkaWdlc3QiLCAiZjk2YjY5N2Q3Y2I3OTM4ZDUyNWEyZjMxYWFmMTYxZDAiKTsKLSAgICBleHBl
Y3RNRDUoImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IiwgImMzZmNkM2Q3NjE5MmU0MDA3ZGZi
NDk2Y2NhNjdlMTNiIik7Ci0gICAgZXhwZWN0TUQ1KCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ
WmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSIsICJkMTc0YWI5OGQyNzdkOWY1
YTU2MTFjMmM5ZjQxOWQ5ZiIpOwotICAgIGV4cGVjdE1ENSgiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAiLCAiNTdlZGY0YTIyYmUzYzk1NWFjNDlkYTJlMjEwN2I2N2EiKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9U
ZXN0SW52b2NhdGlvbkNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCShyZXZpc2lvbiAyNjM3MDUpCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiwxMiArMzYsMTIgQEAKICNpbmNsdWRlIDxjYWlyby9jYWlyby5oPgog
I2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUg
PHd0Zi9NRDUuaD4KKyNpbmNsdWRlIDx3dGYvU0hBMS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdF
eHRyYXMuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVNRDVIYXNo
U3RyaW5nRm9yQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY2hhciBoYXNo
U3RyaW5nWzMzXSkKK3N0YXRpYyB2b2lkIGNvbXB1dGVTSEExSGFzaFN0cmluZ0ZvckNhaXJvU3Vy
ZmFjZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNoYXIgaGFzaFN0cmluZ1szM10pCiB7CiAg
ICAgQVNTRVJUKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdChzdXJmYWNlKSA9PSBDQUlS
T19GT1JNQVRfQVJHQjMyIHx8IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2Zvcm1hdChzdXJmYWNl
KSA9PSBDQUlST19GT1JNQVRfUkdCMjQpOwogCkBAIC00OSwxNCArNDksMTQgQEAgc3RhdGljIHZv
aWQgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JDYWlybwogICAgIHNpemVfdCBwaXhlbHNXaWRlID0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSk7CiAgICAgc2l6ZV90IGJ5dGVz
UGVyUm93ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpOwogCi0gICAg
TUQ1IG1kNUNvbnRleHQ7CisgICAgU0hBMSBzaGExOwogICAgIHVuc2lnbmVkIGNoYXIqIGJpdG1h
cERhdGEgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfZGF0YShzdXJmYWNlKSk7CiAgICAgZm9yIChzaXplX3Qgcm93ID0gMDsgcm93IDwgcGl4ZWxz
SGlnaDsgKytyb3cpIHsKLSAgICAgICAgbWQ1Q29udGV4dC5hZGRCeXRlcyhiaXRtYXBEYXRhLCA0
ICogcGl4ZWxzV2lkZSk7CisgICAgICAgIHNoYTEuYWRkQnl0ZXMoYml0bWFwRGF0YSwgNCAqIHBp
eGVsc1dpZGUpOwogICAgICAgICBiaXRtYXBEYXRhICs9IGJ5dGVzUGVyUm93OwogICAgIH0KLSAg
ICBNRDU6OkRpZ2VzdCBoYXNoOwotICAgIG1kNUNvbnRleHQuY2hlY2tzdW0oaGFzaCk7CisgICAg
U0hBMTo6RGlnZXN0IGhhc2g7CisgICAgc2hhMS5jb21wdXRlSGFzaChoYXNoKTsKIAogICAgIHNu
cHJpbnRmKGhhc2hTdHJpbmcsIDMzLCAiJTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngl
MDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCIsCiAgICAgICAgIGhhc2hbMF0sIGhhc2hb
MV0sIGhhc2hbMl0sIGhhc2hbM10sIGhhc2hbNF0sIGhhc2hbNV0sIGhhc2hbNl0sIGhhc2hbN10s
CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENv
bXBhcgogICAgICAgICBwYWludFJlcGFpbnRSZWN0T3ZlcmxheShzdXJmYWNlLCByZXBhaW50UmVj
dHMpOwogCiAgICAgY2hhciBhY3R1YWxIYXNoWzMzXTsKLSAgICBjb21wdXRlTUQ1SGFzaFN0cmlu
Z0ZvckNhaXJvU3VyZmFjZShzdXJmYWNlLCBhY3R1YWxIYXNoKTsKKyAgICBjb21wdXRlU0hBMUhh
c2hTdHJpbmdGb3JDYWlyb1N1cmZhY2Uoc3VyZmFjZSwgYWN0dWFsSGFzaCk7CiAgICAgaWYgKCFj
b21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhhY3R1YWxIYXNoKSkKICAg
ICAgICAgZHVtcEJpdG1hcChzdXJmYWNlLCBhY3R1YWxIYXNoKTsKIApJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCShyZXZpc2lvbiAyNjM3
MDUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlIDxJbWFnZUlPL0NHSW1hZ2VEZXN0aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdl
YktpdC9XS0ltYWdlQ0cuaD4KLSNpbmNsdWRlIDx3dGYvTUQ1Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TSEExLmg+CiAKICNpZiBQTEFURk9STShNQUMpICYm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2Vydmlj
ZXMuaD4KQEAgLTY3LDEwICs2NywxMCBAQCBzdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNHQ29u
dGV4dEZyb21JCiAgICAgcmV0dXJuIGNyZWF0ZUNHQ29udGV4dEZyb21DR0ltYWdlKGltYWdlLmdl
dCgpKTsKIH0KIAotdm9pZCBjb21wdXRlTUQ1SGFzaFN0cmluZ0ZvckNvbnRleHQoQ0dDb250ZXh0
UmVmIGJpdG1hcENvbnRleHQsIGNoYXIgaGFzaFN0cmluZ1szM10pCit2b2lkIGNvbXB1dGVTSEEx
SGFzaFN0cmluZ0ZvckNvbnRleHQoQ0dDb250ZXh0UmVmIGJpdG1hcENvbnRleHQsIGNoYXIgaGFz
aFN0cmluZ1szM10pCiB7CiAgICAgaWYgKCFiaXRtYXBDb250ZXh0KSB7Ci0gICAgICAgIFdURkxv
Z0Fsd2F5cygiY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JDb250ZXh0OiBjb250ZXh0IGlzIG51bGxc
biIpOworICAgICAgICBXVEZMb2dBbHdheXMoImNvbXB1dGVTSEExSGFzaFN0cmluZ0ZvckNvbnRl
eHQ6IGNvbnRleHQgaXMgbnVsbFxuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNT
RVJUKENHQml0bWFwQ29udGV4dEdldEJpdHNQZXJQaXhlbChiaXRtYXBDb250ZXh0KSA9PSAzMik7
IC8vIEltYWdlRGlmZiBhc3N1bWVzIDMyIGJpdCBSR0JBLCB3ZSBtdXN0IGFzIHdlbGwuCkBAIC03
OSw3ICs3OSw3IEBAIHZvaWQgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JDb250ZXh0KENHQ28KICAg
ICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0JpdG1hcENvbnRleHRHZXRCeXRlc1BlclJvdyhiaXRt
YXBDb250ZXh0KTsKICAgICAKICAgICAvLyBXZSBuZWVkIHRvIHN3YXAgdGhlIGJ5dGVzIHRvIGVu
c3VyZSBjb25zaXN0ZW50IGhhc2hlcyBpbmRlcGVuZGVudGx5IG9mIGVuZGlhbm5lc3MKLSAgICBN
RDUgbWQ1OworICAgIFNIQTEgc2hhMTsKICAgICB1bnNpZ25lZCBjaGFyKiBiaXRtYXBEYXRhID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KENHQml0bWFwQ29udGV4dEdldERhdGEoYml0bWFw
Q29udGV4dCkpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICgoQ0dCaXRtYXBDb250ZXh0
R2V0Qml0bWFwSW5mbyhiaXRtYXBDb250ZXh0KSAmIGtDR0JpdG1hcEJ5dGVPcmRlck1hc2spID09
IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSB7CkBAIC04NywyMyArODcsMjMgQEAgdm9pZCBjb21w
dXRlTUQ1SGFzaFN0cmluZ0ZvckNvbnRleHQoQ0dDbwogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcig0ICogcGl4ZWxzV2lkZSk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNv
bHVtbiA9IDA7IGNvbHVtbiA8IHBpeGVsc1dpZGU7IGNvbHVtbisrKQogICAgICAgICAgICAgICAg
IGJ1ZmZlcltjb2x1bW5dID0gT1NSZWFkTGl0dGxlSW50MzIoYml0bWFwRGF0YSwgNCAqIGNvbHVt
bik7Ci0gICAgICAgICAgICBtZDUuYWRkQnl0ZXMoYnVmZmVyKTsKKyAgICAgICAgICAgIHNoYTEu
YWRkQnl0ZXMoYnVmZmVyKTsKICAgICAgICAgICAgIGJpdG1hcERhdGEgKz0gYnl0ZXNQZXJSb3c7
CiAgICAgICAgIH0KICAgICB9IGVsc2UKICNlbmRpZgogICAgIHsKICAgICAgICAgZm9yICh1bnNp
Z25lZCByb3cgPSAwOyByb3cgPCBwaXhlbHNIaWdoOyByb3crKykgewotICAgICAgICAgICAgbWQ1
LmFkZEJ5dGVzKGJpdG1hcERhdGEsIDQgKiBwaXhlbHNXaWRlKTsKKyAgICAgICAgICAgIHNoYTEu
YWRkQnl0ZXMoYml0bWFwRGF0YSwgNCAqIHBpeGVsc1dpZGUpOwogICAgICAgICAgICAgYml0bWFw
RGF0YSArPSBieXRlc1BlclJvdzsKICAgICAgICAgfQogICAgIH0KIAotICAgIE1ENTo6RGlnZXN0
IGhhc2g7Ci0gICAgbWQ1LmNoZWNrc3VtKGhhc2gpOworICAgIFNIQTE6OkRpZ2VzdCBoYXNoOwor
ICAgIHNoYTEuY29tcHV0ZUhhc2goaGFzaCk7CiAKICAgICBoYXNoU3RyaW5nWzBdID0gJ1wwJzsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IE1ENTo6aGFzaFNpemU7IGkrKykKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IDE2OyBpKyspCiAgICAgICAgIHNucHJpbnRmKGhhc2hTdHJpbmcs
IDMzLCAiJXMlMDJ4IiwgaGFzaFN0cmluZywgaGFzaFtpXSk7CiB9CiAKQEAgLTE4Miw3ICsxODIs
NyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyCiAgICAgICAgIHBh
aW50UmVwYWludFJlY3RPdmVybGF5KGNvbnRleHQuZ2V0KCksIGltYWdlU2l6ZSwgcmVwYWludFJl
Y3RzKTsKIAogICAgIGNoYXIgYWN0dWFsSGFzaFszM107Ci0gICAgY29tcHV0ZU1ENUhhc2hTdHJp
bmdGb3JDb250ZXh0KGNvbnRleHQuZ2V0KCksIGFjdHVhbEhhc2gpOworICAgIGNvbXB1dGVTSEEx
SGFzaFN0cmluZ0ZvckNvbnRleHQoY29udGV4dC5nZXQoKSwgYWN0dWFsSGFzaCk7CiAgICAgaWYg
KCFjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhhY3R1YWxIYXNoKSkK
ICAgICAgICAgZHVtcEJpdG1hcChjb250ZXh0LmdldCgpLCBhY3R1YWxIYXNoKTsKIH0KSW5kZXg6
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RJbnZvY2F0aW9uRGlyZWN0MkQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RJbnZvY2F0aW9uRGly
ZWN0MkQuY3BwCShyZXZpc2lvbiAyNjM3MDUpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL3dp
bi9UZXN0SW52b2NhdGlvbkRpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxjc3Rk
aW8+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvTUQ1Lmg+CiAj
aW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RSIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403156</attachid>
            <date>2020-06-29 18:40:41 -0700</date>
            <delta_ts>2020-06-30 10:26:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213766-20200629194041.patch</filename>
            <type>text/plain</type>
            <size>46822</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM3MDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTI5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdURjo6TUQ1CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM3NjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCB3YXMgb25seSB1
c2VkIGZvciBDVVJMJ3MgY2FjaGUgZmlsZSBuYW1lIGdlbmVyYXRpb24uCisgICAgICAgIElmIHlv
dSB3YW50IHRvIHVzZSBhIGJyb2tlbiBoYXNoIGZ1bmN0aW9uLCB1c2UgU0hBMS4KKworICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiB3dGYvTUQ1LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYv
TUQ1Lmg6IFJlbW92ZWQuCisKIDIwMjAtMDYtMjkgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRzdWhh
cnUub2h6ZWtpQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1NUUkVBTVNfQVBJ
IGNvbXBpbGF0aW9uIGZsYWcKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjYzNzA1KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw2IEBACiAJCUE4QTQ3
M0Q4MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyQjgxNTFBODI1QTAwNDEyM0ZGIC8qIEhh
c2hUYWJsZS5jcHAgKi87IH07CiAJCUE4QTQ3M0U0MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhy
ZWFkQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzJDNTE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZENvY29hLm1tICovOyB9Owog
CQlBOEE0NzNFNTE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzJDNjE1MUE4MjVBMDA0MTIz
RkYgLyogTWFpblRocmVhZC5jcHAgKi87IH07Ci0JCUE4QTQ3M0U5MTUxQTgyNUIwMDQxMjNGRiAv
KiBNRDUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThBNDcyQ0ExNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5jcHAgKi87IH07CiAJCUE4QTQ3M0VDMTUx
QTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MkNEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRh
QWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJQThBNDczRjQxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJl
ck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThBNDcyRDUxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuY3BwICovOyB9Owog
CQlBOEE0NzNGOTE1MUE4MjVCMDA0MTIzRkYgLyogT1NSYW5kb21Tb3VyY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyREExNTFBODI1QjAw
NDEyM0ZGIC8qIE9TUmFuZG9tU291cmNlLmNwcCAqLzsgfTsKQEAgLTU5NSw4ICs1OTQsNiBAQAog
CQlBOEE0NzJDNjE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWluVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThBNDcyQzcxNTFBODI1QjAwNDEyM0ZGIC8qIE1haW5UaHJlYWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFpblRocmVhZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzJDOTE1MUE4MjVCMDA0MTIzRkYgLyogTWF0aEV4dHJh
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoRXh0cmFzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE4QTQ3MkNBMTUxQTgyNUIwMDQxMjNGRiAvKiBNRDUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTUQ1LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNRDUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThBNDcyQ0MxNTFBODI1QjAwNDEyM0ZGIC8qIE1lc3NhZ2VRdWV1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUXVldWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyQ0QxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFB
bGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWV0YUFs
bG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MkNFMTUxQTgy
NUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1ldGFBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEx
MDMsOCArMTEwMCw2IEBACiAJCQkJMUEyMzNDN0MxN0RBQTZFMzAwQTkzQUNGIC8qIE1hbGxvY1B0
ci5oICovLAogCQkJCTMwNENBNEU0MTM3NTQzN0VCRTkzMUQwMyAvKiBNYXJrYWJsZS5oICovLAog
CQkJCUE4QTQ3MkM5MTUxQTgyNUIwMDQxMjNGRiAvKiBNYXRoRXh0cmFzLmggKi8sCi0JCQkJQThB
NDcyQ0ExNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5jcHAgKi8sCi0JCQkJQThBNDcyQ0IxNTFBODI1
QjAwNDEyM0ZGIC8qIE1ENS5oICovLAogCQkJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBN
ZWRpYVRpbWUuY3BwICovLAogCQkJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRp
bWUuaCAqLywKIAkJCQlBREYyQ0U2NDFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50
LmggKi8sCkBAIC0xNjkzLDcgKzE2ODgsNiBAQAogCQkJCTdBNkVCQTM0MjA3NDZDMzQwMDRGOUM0
NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U1MTUxQTgy
NUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U0
MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkQ29jb2EubW0gaW4gU291cmNlcyAqLywKLQkJ
CQlBOEE0NzNFOTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQURGMkNFNjcxRTM5RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUFEODlCNkI3MUU2NDE1MDgwMDkwNzA3RiAvKiBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMjYzNzA1KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNiBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAg
ICAgTG9nZ2luZ0hhc2hNYXAuaAogICAgIExvZ2dpbmdIYXNoU2V0LmgKICAgICBMb2dnaW5nSGFz
aFRyYWl0cy5oCi0gICAgTUQ1LmgKICAgICBNYWNoU2VuZFJpZ2h0LmgKICAgICBNYWluVGhyZWFk
LmgKICAgICBNYWluVGhyZWFkRGF0YS5oCkBAIC00MDMsNyArNDAyLDYgQEAgc2V0KFdURl9TT1VS
Q0VTCiAgICAgTG9jay5jcHAKICAgICBMb2NrZWRQcmludFN0cmVhbS5jcHAKICAgICBMb2dnZXIu
Y3BwCi0gICAgTUQ1LmNwcAogICAgIE1haW5UaHJlYWQuY3BwCiAgICAgTWVkaWFUaW1lLmNwcAog
ICAgIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL01ENS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTUQ1LmNwcAkocmV2aXNpb24gMjYzNzA1
KQorKysgU291cmNlL1dURi93dGYvTUQ1LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI5MSArMCww
IEBACi0vLyBUaGUgb3JpZ2luYWwgZmlsZSB3YXMgY29waWVkIGZyb20gc3FsaXRlLCBhbmQgd2Fz
IGluIHRoZSBwdWJsaWMgZG9tYWluLgotLy8gTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgMjAwNiBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vKgotICogVGhpcyBjb2RlIGltcGxlbWVudHMgdGhl
IE1ENSBtZXNzYWdlLWRpZ2VzdCBhbGdvcml0aG0uCi0gKiBUaGUgYWxnb3JpdGhtIGlzIGR1ZSB0
byBSb24gUml2ZXN0LiAgVGhpcyBjb2RlIHdhcwotICogd3JpdHRlbiBieSBDb2xpbiBQbHVtYiBp
biAxOTkzLCBubyBjb3B5cmlnaHQgaXMgY2xhaW1lZC4KLSAqIFRoaXMgY29kZSBpcyBpbiB0aGUg
cHVibGljIGRvbWFpbjsgZG8gd2l0aCBpdCB3aGF0IHlvdSB3aXNoLgotICoKLSAqIEVxdWl2YWxl
bnQgY29kZSBpcyBhdmFpbGFibGUgZnJvbSBSU0EgRGF0YSBTZWN1cml0eSwgSW5jLgotICogVGhp
cyBjb2RlIGhhcyBiZWVuIHRlc3RlZCBhZ2FpbnN0IHRoYXQsIGFuZCBpcyBlcXVpdmFsZW50LAot
ICogZXhjZXB0IHRoYXQgeW91IGRvbid0IG5lZWQgdG8gaW5jbHVkZSB0d28gcGFnZXMgb2YgbGVn
YWxlc2UKLSAqIHdpdGggZXZlcnkgY29weS4KLSAqCi0gKiBUbyBjb21wdXRlIHRoZSBtZXNzYWdl
IGRpZ2VzdCBvZiBhIGNodW5rIG9mIGJ5dGVzLCBjb25zdHJ1Y3QgYW4KLSAqIE1ENSBpbnN0YW5j
ZSwgY2FsbCBhZGRCeXRlcyBhcyBuZWVkZWQgb24gYnVmZmVycyBmdWxsIG9mIGJ5dGVzLAotICog
YW5kIHRoZW4gY2FsbCBjaGVja3N1bSwgd2hpY2ggd2lsbCBmaWxsIGEgc3VwcGxpZWQgMTYtYnl0
ZSBhcnJheQotICogd2l0aCB0aGUgZGlnZXN0LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlIDx3dGYvTUQ1Lmg+Ci0KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLSNpZiBQTEFU
Rk9STShDT0NPQSkKLQotTUQ1OjpNRDUoKQotewotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCi0gICAgQ0NfTUQ1X0luaXQoJm1fY29udGV4dCk7Ci0gICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi19Ci0KLXZvaWQgTUQ1OjphZGRCeXRlcyhjb25zdCB1
aW50OF90KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgotICAgIENDX01ENV9VcGRhdGUoJm1fY29udGV4dCwgaW5wdXQsIGxl
bmd0aCk7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi19Ci0KLXZvaWQg
TUQ1OjpjaGVja3N1bShEaWdlc3QmIGhhc2gpCi17Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KLSAgICBDQ19NRDVfRmluYWwoaGFzaC5kYXRhKCksICZtX2NvbnRleHQp
OwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotfQotICAgIAotI2Vsc2UK
LQotLy8gTm90ZTogdGhpcyBjb2RlIGlzIGhhcm1sZXNzIG9uIGxpdHRsZS1lbmRpYW4gbWFjaGlu
ZXMuCi0KLXN0YXRpYyB2b2lkIHRvTGl0dGxlRW5kaWFuKHVpbnQ4X3QqIGJ1ZiwgdW5zaWduZWQg
bG9uZ3MpCi17Ci0gICAgQVNTRVJUKGxvbmdzID4gMCk7Ci0gICAgZG8gewotICAgICAgICB1aW50
MzJfdCB0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJ1ZlszXSA8PCA4IHwgYnVmWzJdKSA8PCAx
NiB8IGJ1ZlsxXSA8PCA4IHwgYnVmWzBdOwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCEo
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGJ1ZikgJSBzaXplb2YodCkpLCAiYWxpZ25tZW50
IGVycm9yIG9mIGJ1ZiIpOwotICAgICAgICBtZW1jcHkoYnVmLCAmdCwgc2l6ZW9mKHQpKTsKLSAg
ICAgICAgYnVmICs9IHNpemVvZih0KTsKLSAgICB9IHdoaWxlICgtLWxvbmdzKTsKLX0KLQotLy8g
VGhlIGZvdXIgY29yZSBmdW5jdGlvbnMuCi0vLyBGMSBpcyBvcmlnaW5hbGx5IGRlZmluZWQgYXMg
KHggJiB5IHwgfnggJiB6KSwgYnV0IG9wdGltaXplZCBzb21ld2hhdDogNCBiaXQgb3BzIC0+IDMg
Yml0IG9wcy4KLSNkZWZpbmUgRjEoeCwgeSwgeikgKHogXiAoeCAmICh5IF4geikpKQotI2RlZmlu
ZSBGMih4LCB5LCB6KSBGMSh6LCB4LCB5KQotI2RlZmluZSBGMyh4LCB5LCB6KSAoeCBeIHkgXiB6
KQotI2RlZmluZSBGNCh4LCB5LCB6KSAoeSBeICh4IHwgfnopKQotCi0vLyBUaGlzIGlzIHRoZSBj
ZW50cmFsIHN0ZXAgaW4gdGhlIE1ENSBhbGdvcml0aG0uCi0jZGVmaW5lIE1ENVNURVAoZiwgdywg
eCwgeSwgeiwgZGF0YSwgcykgXAotICAgICh3ICs9IGYoeCwgeSwgeikgKyBkYXRhLCB3ID0gdyA8
PCBzIHwgdyA+PiAoMzIgLSBzKSwgdyArPSB4KQotCi1zdGF0aWMgdm9pZCBNRDVUcmFuc2Zvcm0o
dWludDMyX3QgYnVmWzRdLCBjb25zdCB1aW50MzJfdCBpblsxNl0pCi17Ci0gICAgdWludDMyX3Qg
YSA9IGJ1ZlswXTsKLSAgICB1aW50MzJfdCBiID0gYnVmWzFdOwotICAgIHVpbnQzMl90IGMgPSBi
dWZbMl07Ci0gICAgdWludDMyX3QgZCA9IGJ1ZlszXTsKLQotICAgIE1ENVNURVAoRjEsIGEsIGIs
IGMsIGQsIGluWyAwXSsweGQ3NmFhNDc4LCAgNyk7Ci0gICAgTUQ1U1RFUChGMSwgZCwgYSwgYiwg
YywgaW5bIDFdKzB4ZThjN2I3NTYsIDEyKTsKLSAgICBNRDVTVEVQKEYxLCBjLCBkLCBhLCBiLCBp
blsgMl0rMHgyNDIwNzBkYiwgMTcpOwotICAgIE1ENVNURVAoRjEsIGIsIGMsIGQsIGEsIGluWyAz
XSsweGMxYmRjZWVlLCAyMik7Ci0gICAgTUQ1U1RFUChGMSwgYSwgYiwgYywgZCwgaW5bIDRdKzB4
ZjU3YzBmYWYsICA3KTsKLSAgICBNRDVTVEVQKEYxLCBkLCBhLCBiLCBjLCBpblsgNV0rMHg0Nzg3
YzYyYSwgMTIpOwotICAgIE1ENVNURVAoRjEsIGMsIGQsIGEsIGIsIGluWyA2XSsweGE4MzA0NjEz
LCAxNyk7Ci0gICAgTUQ1U1RFUChGMSwgYiwgYywgZCwgYSwgaW5bIDddKzB4ZmQ0Njk1MDEsIDIy
KTsKLSAgICBNRDVTVEVQKEYxLCBhLCBiLCBjLCBkLCBpblsgOF0rMHg2OTgwOThkOCwgIDcpOwot
ICAgIE1ENVNURVAoRjEsIGQsIGEsIGIsIGMsIGluWyA5XSsweDhiNDRmN2FmLCAxMik7Ci0gICAg
TUQ1U1RFUChGMSwgYywgZCwgYSwgYiwgaW5bMTBdKzB4ZmZmZjViYjEsIDE3KTsKLSAgICBNRDVT
VEVQKEYxLCBiLCBjLCBkLCBhLCBpblsxMV0rMHg4OTVjZDdiZSwgMjIpOwotICAgIE1ENVNURVAo
RjEsIGEsIGIsIGMsIGQsIGluWzEyXSsweDZiOTAxMTIyLCAgNyk7Ci0gICAgTUQ1U1RFUChGMSwg
ZCwgYSwgYiwgYywgaW5bMTNdKzB4ZmQ5ODcxOTMsIDEyKTsKLSAgICBNRDVTVEVQKEYxLCBjLCBk
LCBhLCBiLCBpblsxNF0rMHhhNjc5NDM4ZSwgMTcpOwotICAgIE1ENVNURVAoRjEsIGIsIGMsIGQs
IGEsIGluWzE1XSsweDQ5YjQwODIxLCAyMik7Ci0KLSAgICBNRDVTVEVQKEYyLCBhLCBiLCBjLCBk
LCBpblsgMV0rMHhmNjFlMjU2MiwgIDUpOwotICAgIE1ENVNURVAoRjIsIGQsIGEsIGIsIGMsIGlu
WyA2XSsweGMwNDBiMzQwLCAgOSk7Ci0gICAgTUQ1U1RFUChGMiwgYywgZCwgYSwgYiwgaW5bMTFd
KzB4MjY1ZTVhNTEsIDE0KTsKLSAgICBNRDVTVEVQKEYyLCBiLCBjLCBkLCBhLCBpblsgMF0rMHhl
OWI2YzdhYSwgMjApOwotICAgIE1ENVNURVAoRjIsIGEsIGIsIGMsIGQsIGluWyA1XSsweGQ2MmYx
MDVkLCAgNSk7Ci0gICAgTUQ1U1RFUChGMiwgZCwgYSwgYiwgYywgaW5bMTBdKzB4MDI0NDE0NTMs
ICA5KTsKLSAgICBNRDVTVEVQKEYyLCBjLCBkLCBhLCBiLCBpblsxNV0rMHhkOGExZTY4MSwgMTQp
OwotICAgIE1ENVNURVAoRjIsIGIsIGMsIGQsIGEsIGluWyA0XSsweGU3ZDNmYmM4LCAyMCk7Ci0g
ICAgTUQ1U1RFUChGMiwgYSwgYiwgYywgZCwgaW5bIDldKzB4MjFlMWNkZTYsICA1KTsKLSAgICBN
RDVTVEVQKEYyLCBkLCBhLCBiLCBjLCBpblsxNF0rMHhjMzM3MDdkNiwgIDkpOwotICAgIE1ENVNU
RVAoRjIsIGMsIGQsIGEsIGIsIGluWyAzXSsweGY0ZDUwZDg3LCAxNCk7Ci0gICAgTUQ1U1RFUChG
MiwgYiwgYywgZCwgYSwgaW5bIDhdKzB4NDU1YTE0ZWQsIDIwKTsKLSAgICBNRDVTVEVQKEYyLCBh
LCBiLCBjLCBkLCBpblsxM10rMHhhOWUzZTkwNSwgIDUpOwotICAgIE1ENVNURVAoRjIsIGQsIGEs
IGIsIGMsIGluWyAyXSsweGZjZWZhM2Y4LCAgOSk7Ci0gICAgTUQ1U1RFUChGMiwgYywgZCwgYSwg
YiwgaW5bIDddKzB4Njc2ZjAyZDksIDE0KTsKLSAgICBNRDVTVEVQKEYyLCBiLCBjLCBkLCBhLCBp
blsxMl0rMHg4ZDJhNGM4YSwgMjApOwotCi0gICAgTUQ1U1RFUChGMywgYSwgYiwgYywgZCwgaW5b
IDVdKzB4ZmZmYTM5NDIsICA0KTsKLSAgICBNRDVTVEVQKEYzLCBkLCBhLCBiLCBjLCBpblsgOF0r
MHg4NzcxZjY4MSwgMTEpOwotICAgIE1ENVNURVAoRjMsIGMsIGQsIGEsIGIsIGluWzExXSsweDZk
OWQ2MTIyLCAxNik7Ci0gICAgTUQ1U1RFUChGMywgYiwgYywgZCwgYSwgaW5bMTRdKzB4ZmRlNTM4
MGMsIDIzKTsKLSAgICBNRDVTVEVQKEYzLCBhLCBiLCBjLCBkLCBpblsgMV0rMHhhNGJlZWE0NCwg
IDQpOwotICAgIE1ENVNURVAoRjMsIGQsIGEsIGIsIGMsIGluWyA0XSsweDRiZGVjZmE5LCAxMSk7
Ci0gICAgTUQ1U1RFUChGMywgYywgZCwgYSwgYiwgaW5bIDddKzB4ZjZiYjRiNjAsIDE2KTsKLSAg
ICBNRDVTVEVQKEYzLCBiLCBjLCBkLCBhLCBpblsxMF0rMHhiZWJmYmM3MCwgMjMpOwotICAgIE1E
NVNURVAoRjMsIGEsIGIsIGMsIGQsIGluWzEzXSsweDI4OWI3ZWM2LCAgNCk7Ci0gICAgTUQ1U1RF
UChGMywgZCwgYSwgYiwgYywgaW5bIDBdKzB4ZWFhMTI3ZmEsIDExKTsKLSAgICBNRDVTVEVQKEYz
LCBjLCBkLCBhLCBiLCBpblsgM10rMHhkNGVmMzA4NSwgMTYpOwotICAgIE1ENVNURVAoRjMsIGIs
IGMsIGQsIGEsIGluWyA2XSsweDA0ODgxZDA1LCAyMyk7Ci0gICAgTUQ1U1RFUChGMywgYSwgYiwg
YywgZCwgaW5bIDldKzB4ZDlkNGQwMzksICA0KTsKLSAgICBNRDVTVEVQKEYzLCBkLCBhLCBiLCBj
LCBpblsxMl0rMHhlNmRiOTllNSwgMTEpOwotICAgIE1ENVNURVAoRjMsIGMsIGQsIGEsIGIsIGlu
WzE1XSsweDFmYTI3Y2Y4LCAxNik7Ci0gICAgTUQ1U1RFUChGMywgYiwgYywgZCwgYSwgaW5bIDJd
KzB4YzRhYzU2NjUsIDIzKTsKLQotICAgIE1ENVNURVAoRjQsIGEsIGIsIGMsIGQsIGluWyAwXSsw
eGY0MjkyMjQ0LCAgNik7Ci0gICAgTUQ1U1RFUChGNCwgZCwgYSwgYiwgYywgaW5bIDddKzB4NDMy
YWZmOTcsIDEwKTsKLSAgICBNRDVTVEVQKEY0LCBjLCBkLCBhLCBiLCBpblsxNF0rMHhhYjk0MjNh
NywgMTUpOwotICAgIE1ENVNURVAoRjQsIGIsIGMsIGQsIGEsIGluWyA1XSsweGZjOTNhMDM5LCAy
MSk7Ci0gICAgTUQ1U1RFUChGNCwgYSwgYiwgYywgZCwgaW5bMTJdKzB4NjU1YjU5YzMsICA2KTsK
LSAgICBNRDVTVEVQKEY0LCBkLCBhLCBiLCBjLCBpblsgM10rMHg4ZjBjY2M5MiwgMTApOwotICAg
IE1ENVNURVAoRjQsIGMsIGQsIGEsIGIsIGluWzEwXSsweGZmZWZmNDdkLCAxNSk7Ci0gICAgTUQ1
U1RFUChGNCwgYiwgYywgZCwgYSwgaW5bIDFdKzB4ODU4NDVkZDEsIDIxKTsKLSAgICBNRDVTVEVQ
KEY0LCBhLCBiLCBjLCBkLCBpblsgOF0rMHg2ZmE4N2U0ZiwgIDYpOwotICAgIE1ENVNURVAoRjQs
IGQsIGEsIGIsIGMsIGluWzE1XSsweGZlMmNlNmUwLCAxMCk7Ci0gICAgTUQ1U1RFUChGNCwgYywg
ZCwgYSwgYiwgaW5bIDZdKzB4YTMwMTQzMTQsIDE1KTsKLSAgICBNRDVTVEVQKEY0LCBiLCBjLCBk
LCBhLCBpblsxM10rMHg0ZTA4MTFhMSwgMjEpOwotICAgIE1ENVNURVAoRjQsIGEsIGIsIGMsIGQs
IGluWyA0XSsweGY3NTM3ZTgyLCAgNik7Ci0gICAgTUQ1U1RFUChGNCwgZCwgYSwgYiwgYywgaW5b
MTFdKzB4YmQzYWYyMzUsIDEwKTsKLSAgICBNRDVTVEVQKEY0LCBjLCBkLCBhLCBiLCBpblsgMl0r
MHgyYWQ3ZDJiYiwgMTUpOwotICAgIE1ENVNURVAoRjQsIGIsIGMsIGQsIGEsIGluWyA5XSsweGVi
ODZkMzkxLCAyMSk7Ci0KLSAgICBidWZbMF0gKz0gYTsKLSAgICBidWZbMV0gKz0gYjsKLSAgICBi
dWZbMl0gKz0gYzsKLSAgICBidWZbM10gKz0gZDsKLX0KLQotTUQ1OjpNRDUoKQotewotICAgIG1f
YnVmWzBdID0gMHg2NzQ1MjMwMTsKLSAgICBtX2J1ZlsxXSA9IDB4ZWZjZGFiODk7Ci0gICAgbV9i
dWZbMl0gPSAweDk4YmFkY2ZlOwotICAgIG1fYnVmWzNdID0gMHgxMDMyNTQ3NjsKLSAgICBtX2Jp
dHNbMF0gPSAwOwotICAgIG1fYml0c1sxXSA9IDA7Ci0gICAgbWVtc2V0KG1faW4sIDAsIHNpemVv
ZihtX2luKSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90PihtX2luKSAlIHNpemVvZih1aW50MzJfdCkpLCAiYWxpZ25tZW50IGVycm9yIG9mIG1f
aW4iKTsKLX0KLQotdm9pZCBNRDU6OmFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGlucHV0LCBzaXpl
X3QgbGVuZ3RoKQotewotICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZiA9IGlucHV0OwotCi0gICAgLy8g
VXBkYXRlIGJpdGNvdW50Ci0gICAgdWludDMyX3QgdCA9IG1fYml0c1swXTsKLSAgICBtX2JpdHNb
MF0gPSB0ICsgKGxlbmd0aCA8PCAzKTsKLSAgICBpZiAobV9iaXRzWzBdIDwgdCkKLSAgICAgICAg
bV9iaXRzWzFdKys7IC8vIENhcnJ5IGZyb20gbG93IHRvIGhpZ2gKLSAgICBtX2JpdHNbMV0gKz0g
bGVuZ3RoID4+IDI5OwotCi0gICAgdCA9ICh0ID4+IDMpICYgMHgzZjsgLy8gQnl0ZXMgYWxyZWFk
eSBpbiBzaHNJbmZvLT5kYXRhCi0KLSAgICAvLyBIYW5kbGUgYW55IGxlYWRpbmcgb2RkLXNpemVk
IGNodW5rcwotCi0gICAgaWYgKHQpIHsKLSAgICAgICAgdWludDhfdCogcCA9IG1faW4gKyB0Owot
Ci0gICAgICAgIHQgPSA2NCAtIHQ7Ci0gICAgICAgIGlmIChsZW5ndGggPCB0KSB7Ci0gICAgICAg
ICAgICBtZW1jcHkocCwgYnVmLCBsZW5ndGgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIG1lbWNweShwLCBidWYsIHQpOwotICAgICAgICB0b0xpdHRsZUVuZGlhbiht
X2luLCAxNik7Ci0gICAgICAgIE1ENVRyYW5zZm9ybShtX2J1ZiwgcmVpbnRlcnByZXRfY2FzdF9w
dHI8dWludDMyX3QqPihtX2luKSk7IC8vIG1faW4gaXMgNC1ieXRlIGFsaWduZWQuCi0gICAgICAg
IGJ1ZiArPSB0OwotICAgICAgICBsZW5ndGggLT0gdDsKLSAgICB9Ci0KLSAgICAvLyBQcm9jZXNz
IGRhdGEgaW4gNjQtYnl0ZSBjaHVua3MKLQotICAgIHdoaWxlIChsZW5ndGggPj0gNjQpIHsKLSAg
ICAgICAgbWVtY3B5KG1faW4sIGJ1ZiwgNjQpOwotICAgICAgICB0b0xpdHRsZUVuZGlhbihtX2lu
LCAxNik7Ci0gICAgICAgIE1ENVRyYW5zZm9ybShtX2J1ZiwgcmVpbnRlcnByZXRfY2FzdF9wdHI8
dWludDMyX3QqPihtX2luKSk7IC8vIG1faW4gaXMgNC1ieXRlIGFsaWduZWQuCi0gICAgICAgIGJ1
ZiArPSA2NDsKLSAgICAgICAgbGVuZ3RoIC09IDY0OwotICAgIH0KLQotICAgIC8vIEhhbmRsZSBh
bnkgcmVtYWluaW5nIGJ5dGVzIG9mIGRhdGEuCi0gICAgbWVtY3B5KG1faW4sIGJ1ZiwgbGVuZ3Ro
KTsKLX0KLQotdm9pZCBNRDU6OmNoZWNrc3VtKERpZ2VzdCYgZGlnZXN0KQotewotICAgIC8vIENv
bXB1dGUgbnVtYmVyIG9mIGJ5dGVzIG1vZCA2NAotICAgIHVuc2lnbmVkIGNvdW50ID0gKG1fYml0
c1swXSA+PiAzKSAmIDB4M0Y7Ci0KLSAgICAvLyBTZXQgdGhlIGZpcnN0IGNoYXIgb2YgcGFkZGlu
ZyB0byAweDgwLiAgVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXJlIGlzCi0gICAgLy8gYWx3YXlzIGF0
IGxlYXN0IG9uZSBieXRlIGZyZWUKLSAgICB1aW50OF90KiBwID0gbV9pbiArIGNvdW50OwotICAg
ICpwKysgPSAweDgwOwotCi0gICAgLy8gQnl0ZXMgb2YgcGFkZGluZyBuZWVkZWQgdG8gbWFrZSA2
NCBieXRlcwotICAgIGNvdW50ID0gNjQgLSAxIC0gY291bnQ7Ci0KLSAgICAvLyBQYWQgb3V0IHRv
IDU2IG1vZCA2NAotICAgIGlmIChjb3VudCA8IDgpIHsKLSAgICAgICAgLy8gVHdvIGxvdHMgb2Yg
cGFkZGluZzogIFBhZCB0aGUgZmlyc3QgYmxvY2sgdG8gNjQgYnl0ZXMKLSAgICAgICAgbWVtc2V0
KHAsIDAsIGNvdW50KTsKLSAgICAgICAgdG9MaXR0bGVFbmRpYW4obV9pbiwgMTYpOwotICAgICAg
ICBNRDVUcmFuc2Zvcm0obV9idWYsIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVpbnQzMl90ICo+KG1f
aW4pKTsgLy8gbV9pbiBpcyA0LWJ5dGUgYWxpZ25lZC4KLQotICAgICAgICAvLyBOb3cgZmlsbCB0
aGUgbmV4dCBibG9jayB3aXRoIDU2IGJ5dGVzCi0gICAgICAgIG1lbXNldChtX2luLCAwLCA1Nik7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUGFkIGJsb2NrIHRvIDU2IGJ5dGVzCi0gICAgICAg
IG1lbXNldChwLCAwLCBjb3VudCAtIDgpOwotICAgIH0KLSAgICB0b0xpdHRsZUVuZGlhbihtX2lu
LCAxNCk7Ci0KLSAgICAvLyBBcHBlbmQgbGVuZ3RoIGluIGJpdHMgYW5kIHRyYW5zZm9ybQotICAg
IG1lbWNweShtX2luICsgNTYsIG1fYml0cywgc2l6ZW9mKG1fYml0cykpOwotCi0gICAgTUQ1VHJh
bnNmb3JtKG1fYnVmLCByZWludGVycHJldF9jYXN0X3B0cjx1aW50MzJfdCo+KG1faW4pKTsKLSAg
ICB0b0xpdHRsZUVuZGlhbihyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2J1ZiksIDQpOwot
Ci0gICAgLy8gTm93LCBtX2J1ZiBjb250YWlucyBjaGVja3N1bSByZXN1bHQuCi0gICAgdWludDhf
dCogbUJ1ZlVJbnQ4ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obV9idWYpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgaGFzaFNpemU7ICsraSkKLSAgICAgICAgZGlnZXN0W2ldID0g
bUJ1ZlVJbnQ4W2ldOwotCi0gICAgLy8gSW4gY2FzZSBpdCdzIHNlbnNpdGl2ZQotICAgIG1lbXNl
dChtX2J1ZiwgMCwgc2l6ZW9mKG1fYnVmKSk7Ci0gICAgbWVtc2V0KG1fYml0cywgMCwgc2l6ZW9m
KG1fYml0cykpOwotICAgIG1lbXNldChtX2luLCAwLCBzaXplb2YobV9pbikpOwotfQotCi0jZW5k
aWYKLQotfSAvLyBuYW1lc3BhY2UgV1RGCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV1RG
L3d0Zi9NRDUuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNl
L1dURi93dGYvTUQ1LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTUQ1LmgJKHJldmlz
aW9uIDI2MzcwNSkKKysrIFNvdXJjZS9XVEYvd3RmL01ENS5oCShub25leGlzdGVudCkKQEAgLTEs
NzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8Q29tbW9uQ3J5cHRv
L0NvbW1vbkRpZ2VzdC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBNRDUg
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBNRDUoKTsKLQotICAgIHZvaWQgYWRkQnl0ZXMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBpbnB1dCkKLSAgICB7Ci0gICAgICAgIGFkZEJ5dGVzKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6
ZSgpKTsKLSAgICB9Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkQnl0ZXMoY29uc3Qg
dWludDhfdCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOwotCi0gICAgLy8gU2l6ZSBvZiB0aGUgU0hB
MSBoYXNoCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGhh
c2hTaXplID0gMTY7Ci0KLSAgICAvLyB0eXBlIGZvciBjb21wdXRpbmcgTUQ1IGhhc2gKLSAgICB0
eXBlZGVmIHN0ZDo6YXJyYXk8dWludDhfdCwgaGFzaFNpemU+IERpZ2VzdDsKLQotICAgIC8vIGNo
ZWNrc3VtIGhhcyBhIHNpZGUgZWZmZWN0IG9mIHJlc2V0dGluZyB0aGUgc3RhdGUgb2YgdGhlIG9i
amVjdC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBjaGVja3N1bShEaWdlc3QmKTsKLQot
cHJpdmF0ZToKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBDQ19NRDVfQ1RYIG1fY29udGV4dDsK
LSNlbHNlCi0gICAgdWludDMyX3QgbV9idWZbNF07Ci0gICAgdWludDMyX3QgbV9iaXRzWzJdOwot
ICAgIHVpbnQ4X3QgbV9pbls2NF07Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgot
Ci11c2luZyBXVEY6Ok1ENTsKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XVEYvd3RmL01E
NS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRp
dmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMjYzNzA1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMjAtMDYtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgV1RGOjpNRDUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzc2NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpnZW5l
cmF0ZUJhc2VGaWxlbmFtZSk6CisKIDIwMjAtMDYtMjkgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRz
dWhhcnUub2h6ZWtpQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1NUUkVBTVNf
QVBJIGNvbXBpbGF0aW9uIGZsYWcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCShyZXZpc2lvbiAyNjM3
MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIldlYlNv
Y2tldC5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL01ENS5oPgogI2luY2x1
ZGUgPHd0Zi9TSEExLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9TdHJpbmdFeHRyYXMuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAkocmV2aXNpb24gMjYzNzA1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1i
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvTUQ1Lmg+CisjaW5jbHVkZSA8d3RmL1NIQTEuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMTEsMTUgKzIxMSwxNSBAQCB2b2lkIEN1cmxDYWNoZUVu
dHJ5OjpkaWRGaW5pc2hMb2FkaW5nKCkKIAogdm9pZCBDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVC
YXNlRmlsZW5hbWUoY29uc3QgQ1N0cmluZyYgdXJsKQogewotICAgIE1ENSBtZDU7Ci0gICAgbWQ1
LmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHVybC5kYXRhKCkpLCB1
cmwubGVuZ3RoKCkpOworICAgIFNIQTEgc2hhMTsKKyAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHVybC5kYXRhKCkpLCB1cmwubGVuZ3RoKCkpOwogCi0g
ICAgTUQ1OjpEaWdlc3Qgc3VtOwotICAgIG1kNS5jaGVja3N1bShzdW0pOworICAgIFNIQTE6OkRp
Z2VzdCBzdW07CisgICAgc2hhMS5jb21wdXRlSGFzaChzdW0pOwogICAgIHVpbnQ4X3QqIHJhd2Rh
dGEgPSBzdW0uZGF0YSgpOwogCiAgICAgU3RyaW5nQnVpbGRlciBiYXNlTmFtZUJ1aWxkZXI7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBNRDU6Omhhc2hTaXplOyBpKyspCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCAxNjsgaSsrKQogICAgICAgICBiYXNlTmFtZUJ1aWxkZXIuYXBwZW5k
KGhleChyYXdkYXRhW2ldLCBMb3dlcmNhc2UpKTsKICAgICBtX2Jhc2VuYW1lID0gYmFzZU5hbWVC
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjM3MTEpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNi0yOSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBXVEY6Ok1E
NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNzY2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9QbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L01ENS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52
b2NhdGlvbkNHLmNwcDoKKyAgICAgICAgKFdUUjo6Y29tcHV0ZVNIQTFIYXNoU3RyaW5nRm9yQ29u
dGV4dCk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFy
ZVdpdGhFeHBlY3RlZCk6CisgICAgICAgIChXVFI6OmNvbXB1dGVNRDVIYXNoU3RyaW5nRm9yQ29u
dGV4dCk6IERlbGV0ZWQuCisKIDIwMjAtMDYtMjkgIFRldHN1aGFydSBPaHpla2kgIDx0ZXRzdWhh
cnUub2h6ZWtpQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1NUUkVBTVNfQVBJ
IGNvbXBpbGF0aW9uIGZsYWcKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1
cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1
cHBvcnQuY3BwCShyZXZpc2lvbiAyNjM3MDUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9QaXhl
bER1bXBTdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIGR1
bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4CiAgICAgCiAgICAgLy8gQ29tcHV0ZSB0
aGUgaGFzaCBvZiB0aGUgYml0bWFwIGNvbnRleHQgcGl4ZWxzCiAgICAgY2hhciBhY3R1YWxIYXNo
WzMzXTsKLSAgICBjb21wdXRlTUQ1SGFzaFN0cmluZ0ZvckJpdG1hcENvbnRleHQoY29udGV4dC5n
ZXQoKSwgYWN0dWFsSGFzaCk7CisgICAgY29tcHV0ZVNIQTFIYXNoU3RyaW5nRm9yQml0bWFwQ29u
dGV4dChjb250ZXh0LmdldCgpLCBhY3R1YWxIYXNoKTsKICAgICBmcHJpbnRmKHRlc3RSZXN1bHQs
ICJcbkFjdHVhbEhhc2g6ICVzXG4iLCBhY3R1YWxIYXNoKTsgLy8gRklYTUU6IE5vIG5lZWQgZm9y
IHRoZSBsZWFkaW5nIG5ld2xpbmUuCiAKICAgICAvLyBDaGVjayB0aGUgY29tcHV0ZWQgaGFzaCBh
Z2FpbnN0IHRoZSBleHBlY3RlZCBvbmUgYW5kIGR1bXAgaW1hZ2Ugb24gbWlzbWF0Y2gKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0LmgJKHJldmlzaW9uIDI2MzcwNSkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNyArMzMsNyBAQAogCiBjbGFzcyBCaXRtYXBDb250ZXh0OwogCi12b2lkIGNvbXB1
dGVNRDVIYXNoU3RyaW5nRm9yQml0bWFwQ29udGV4dChCaXRtYXBDb250ZXh0KiwgY2hhciBoYXNo
U3RyaW5nWzMzXSk7Cit2b2lkIGNvbXB1dGVTSEExSGFzaFN0cmluZ0ZvckJpdG1hcENvbnRleHQo
Qml0bWFwQ29udGV4dCosIGNoYXIgaGFzaFN0cmluZ1szM10pOwogUmVmUHRyPEJpdG1hcENvbnRl
eHQ+IGNyZWF0ZVBhZ2VkQml0bWFwQ29udGV4dCgpOwogUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNy
ZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVuLCBib29sIGluY3JlbWVu
dGFsUmVwYWludCwgYm9vbCBzd2VlcEhvcml6b250YWxseSwgYm9vbCBkcmF3U2VsZWN0aW9uUmVj
dCk7CiB2b2lkIGR1bXBCaXRtYXAoQml0bWFwQ29udGV4dCosIGNvbnN0IGNoYXIqIGNoZWNrc3Vt
KTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtV2luLmNtYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtV2luLmNtYWtlCShyZXZpc2lvbiAy
NjM3MDUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9QbGF0Zm9ybVdpbi5jbWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMTEsNyArMTEsNiBAQCBsaXN0KEFQUEVORCBEdW1wUmVuZGVyVHJlZV9TT1VS
Q0VTCiAgICAgd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAogICAgIHdpbi9HQ0NvbnRyb2xsZXJX
aW4uY3BwCiAgICAgd2luL0hpc3RvcnlEZWxlZ2F0ZS5jcHAKLSAgICB3aW4vTUQ1LmNwcAogICAg
IHdpbi9QaXhlbER1bXBTdXBwb3J0V2luLmNwcAogICAgIHdpbi9Qb2xpY3lEZWxlZ2F0ZS5jcHAK
ICAgICB3aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9jYWlyby9QaXhlbER1bXBTdXBwb3J0Q2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2NhaXJvL1BpeGVsRHVtcFN1cHBvcnRDYWlyby5jcHAJKHJldmlzaW9u
IDI2MzcwNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2NhaXJvL1BpeGVsRHVtcFN1cHBvcnRD
YWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgot
I2luY2x1ZGUgPHd0Zi9NRDUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyB2b2lkIHByaW50UE5HKGNhaXJvX3N1
cmZhY2VfdCogaW0KICAgICBwcmludFBORyhkYXRhLCBkYXRhTGVuZ3RoLCBjaGVja3N1bSk7CiB9
CiAKLXZvaWQgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JCaXRtYXBDb250ZXh0KEJpdG1hcENvbnRl
eHQqIGNvbnRleHQsIGNoYXIgaGFzaFN0cmluZ1szM10pCit2b2lkIGNvbXB1dGVTSEExSGFzaFN0
cmluZ0ZvckJpdG1hcENvbnRleHQoQml0bWFwQ29udGV4dCogY29udGV4dCwgY2hhciBoYXNoU3Ry
aW5nWzMzXSkKIHsKICAgICBjYWlyb190KiBiaXRtYXBDb250ZXh0ID0gY29udGV4dC0+Y2Fpcm9D
b250ZXh0KCk7CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9fZ2V0X3Rhcmdl
dChiaXRtYXBDb250ZXh0KTsKQEAgLTcyLDE0ICs3MiwxNCBAQCB2b2lkIGNvbXB1dGVNRDVIYXNo
U3RyaW5nRm9yQml0bWFwQ29udGV4CiAgICAgc2l6ZV90IHBpeGVsc1dpZGUgPSBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKTsKICAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSk7CiAKLSAgICBNRDUgbWQ1Q29u
dGV4dDsKKyAgICBTSEExIHNoYTE7CiAgICAgdW5zaWduZWQgY2hhciogYml0bWFwRGF0YSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1
cmZhY2UpKTsKICAgICBmb3IgKHVuc2lnbmVkIHJvdyA9IDA7IHJvdyA8IHBpeGVsc0hpZ2g7IHJv
dysrKSB7Ci0gICAgICAgIG1kNUNvbnRleHQuYWRkQnl0ZXMoYml0bWFwRGF0YSwgNCAqIHBpeGVs
c1dpZGUpOworICAgICAgICBzaGExLmFkZEJ5dGVzKGJpdG1hcERhdGEsIDQgKiBwaXhlbHNXaWRl
KTsKICAgICAgICAgYml0bWFwRGF0YSArPSBieXRlc1BlclJvdzsKICAgICB9Ci0gICAgTUQ1OjpE
aWdlc3QgaGFzaDsKLSAgICBtZDVDb250ZXh0LmNoZWNrc3VtKGhhc2gpOworICAgIFNIQTE6OkRp
Z2VzdCBoYXNoOworICAgIHNoYTEuY29tcHV0ZUhhc2goaGFzaCk7CiAKICAgICBzbnByaW50Ziho
YXNoU3RyaW5nLCAzMywgIiUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngl
MDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAogICAgICAgICBoYXNoWzBdLCBoYXNoWzFdLCBoYXNo
WzJdLCBoYXNoWzNdLCBoYXNoWzRdLCBoYXNoWzVdLCBoYXNoWzZdLCBoYXNoWzddLApJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvUGl4ZWxEdW1wU3VwcG9ydENHLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0Q0cuY3BwCShyZXZp
c2lvbiAyNjM3MDUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jZy9QaXhlbER1bXBTdXBwb3J0
Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzksOSBAQAogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU0hBMS5oPgogCi0jaWYgUExBVEZPUk0oV0lOKQotI2lu
Y2x1ZGUgIk1ENS5oIgotI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2luY2x1ZGUgPE1vYmlsZUNvcmVTZXJ2aWNlcy9VVENvcmVUeXBlcy5oPgog
I2RlZmluZSBDT01NT05fRElHRVNUX0ZPUl9PUEVOU1NMCiAjaW5jbHVkZSA8Q29tbW9uQ3J5cHRv
L0NvbW1vbkRpZ2VzdC5oPgpAQCAtNzEsNyArNzAsNyBAQCBzdGF0aWMgdm9pZCBwcmludFBORyhD
R0ltYWdlUmVmIGltYWdlLCBjCiAgICAgcHJpbnRQTkcoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KGRhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGFMZW5ndGgpLCBjaGVja3N1
bSk7CiB9CiAKLXZvaWQgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JCaXRtYXBDb250ZXh0KEJpdG1h
cENvbnRleHQqIGNvbnRleHQsIGNoYXIgaGFzaFN0cmluZ1szM10pCit2b2lkIGNvbXB1dGVTSEEx
SGFzaFN0cmluZ0ZvckJpdG1hcENvbnRleHQoQml0bWFwQ29udGV4dCogY29udGV4dCwgY2hhciBo
YXNoU3RyaW5nWzMzXSkKIHsKICAgICBDR0NvbnRleHRSZWYgYml0bWFwQ29udGV4dCA9IGNvbnRl
eHQtPmNnQ29udGV4dCgpOwogCkBAIC04MSw4ICs4MCw3IEBAIHZvaWQgY29tcHV0ZU1ENUhhc2hT
dHJpbmdGb3JCaXRtYXBDb250ZXgKICAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0JpdG1hcENv
bnRleHRHZXRCeXRlc1BlclJvdyhiaXRtYXBDb250ZXh0KTsKIAogICAgIC8vIFdlIG5lZWQgdG8g
c3dhcCB0aGUgYnl0ZXMgdG8gZW5zdXJlIGNvbnNpc3RlbnQgaGFzaGVzIGluZGVwZW5kZW50bHkg
b2YgZW5kaWFubmVzcwotICAgIE1ENV9DVFggbWQ1Q29udGV4dDsKLSAgICBNRDVfSW5pdCgmbWQ1
Q29udGV4dCk7CisgICAgU0hBMSBzaGExOwogICAgIHVuc2lnbmVkIGNoYXIqIGJpdG1hcERhdGEg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oQ0dCaXRtYXBDb250ZXh0R2V0RGF0YShiaXRt
YXBDb250ZXh0KSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKChDR0JpdG1hcENvbnRl
eHRHZXRCaXRtYXBJbmZvKGJpdG1hcENvbnRleHQpICYga0NHQml0bWFwQnl0ZU9yZGVyTWFzaykg
PT0ga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpIHsKQEAgLTkwLDE5ICs4OCwxOSBAQCB2b2lkIGNv
bXB1dGVNRDVIYXNoU3RyaW5nRm9yQml0bWFwQ29udGV4CiAgICAgICAgICAgICB1aW50MzJfdCBi
dWZmZXJbcGl4ZWxzV2lkZV07CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNvbHVtbiA9IDA7
IGNvbHVtbiA8IHBpeGVsc1dpZGU7IGNvbHVtbisrKQogICAgICAgICAgICAgICAgIGJ1ZmZlcltj
b2x1bW5dID0gT1NSZWFkTGl0dGxlSW50MzIoYml0bWFwRGF0YSwgNCAqIGNvbHVtbik7Ci0gICAg
ICAgICAgICBNRDVfVXBkYXRlKCZtZDVDb250ZXh0LCBidWZmZXIsIDQgKiBwaXhlbHNXaWRlKTsK
KyAgICAgICAgICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oYnVmZmVyKSwgNCAqIHBpeGVsc1dpZGUpOwogICAgICAgICAgICAgYml0bWFwRGF0YSArPSBi
eXRlc1BlclJvdzsKICAgICAgICAgfQogICAgIH0gZWxzZQogI2VuZGlmCiAgICAgewogICAgICAg
ICBmb3IgKHVuc2lnbmVkIHJvdyA9IDA7IHJvdyA8IHBpeGVsc0hpZ2g7IHJvdysrKSB7Ci0gICAg
ICAgICAgICBNRDVfVXBkYXRlKCZtZDVDb250ZXh0LCBiaXRtYXBEYXRhLCA0ICogcGl4ZWxzV2lk
ZSk7CisgICAgICAgICAgICBzaGExLmFkZEJ5dGVzKGJpdG1hcERhdGEsIDQgKiBwaXhlbHNXaWRl
KTsKICAgICAgICAgICAgIGJpdG1hcERhdGEgKz0gYnl0ZXNQZXJSb3c7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgdW5zaWduZWQgY2hhciBoYXNoWzE2XTsKLSAgICBNRDVfRmluYWwoaGFzaCwgJm1k
NUNvbnRleHQpOworICAgIFNIQTE6OkRpZ2VzdCBoYXNoOworICAgIHNoYTEuY29tcHV0ZUhhc2go
aGFzaCk7CiAKICAgICBoYXNoU3RyaW5nWzBdID0gJ1wwJzsKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IDE2OyBpKyspCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1LmNwcAkocmV2aXNpb24gMjYz
NzA1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL01ENS5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTUQ1LmgiCi0KLSNpbmNsdWRl
IDx3aW5kb3dzLmg+Ci0KLXR5cGVkZWYgdm9pZCAoV0lOQVBJKmluaXRQdHIpKE1ENV9DVFgqKTsK
LXR5cGVkZWYgdm9pZCAoV0lOQVBJKnVwZGF0ZVB0cikoTUQ1X0NUWCosIHVuc2lnbmVkIGNoYXIq
LCB1bnNpZ25lZCk7Ci10eXBlZGVmIHZvaWQgKFdJTkFQSSpmaW5hbFB0cikoTUQ1X0NUWCopOwot
Ci1zdGF0aWMgSE1PRFVMRSBjcnlwdERMTCgpCi17Ci0gICAgc3RhdGljIEhNT0RVTEUgbW9kdWxl
ID0gTG9hZExpYnJhcnlXKEwiQ3J5cHRkbGwuZGxsIik7Ci0gICAgcmV0dXJuIG1vZHVsZTsKLX0K
LQotc3RhdGljIGluaXRQdHIgaW5pdCgpCi17Ci0gICAgc3RhdGljIGluaXRQdHIgcHRyID0gcmVp
bnRlcnByZXRfY2FzdDxpbml0UHRyPihHZXRQcm9jQWRkcmVzcyhjcnlwdERMTCgpLCAiTUQ1SW5p
dCIpKTsKLSAgICByZXR1cm4gcHRyOwotfQotCi1zdGF0aWMgdXBkYXRlUHRyIHVwZGF0ZSgpCi17
Ci0gICAgc3RhdGljIHVwZGF0ZVB0ciBwdHIgPSByZWludGVycHJldF9jYXN0PHVwZGF0ZVB0cj4o
R2V0UHJvY0FkZHJlc3MoY3J5cHRETEwoKSwgIk1ENVVwZGF0ZSIpKTsKLSAgICByZXR1cm4gcHRy
OwotfQotCi1zdGF0aWMgZmluYWxQdHIgZmluYWwoKQotewotICAgIHN0YXRpYyBmaW5hbFB0ciBw
dHIgPSByZWludGVycHJldF9jYXN0PGZpbmFsUHRyPihHZXRQcm9jQWRkcmVzcyhjcnlwdERMTCgp
LCAiTUQ1RmluYWwiKSk7Ci0gICAgcmV0dXJuIHB0cjsKLX0KLQotdm9pZCBNRDVfSW5pdChNRDVf
Q1RYKiBjb250ZXh0KQotewotICAgIGluaXQoKShjb250ZXh0KTsKLX0KLQotdm9pZCBNRDVfVXBk
YXRlKE1ENV9DVFgqIGNvbnRleHQsIHVuc2lnbmVkIGNoYXIqIGlucHV0LCB1bnNpZ25lZCBsZW5n
dGgpCi17Ci0gICAgdXBkYXRlKCkoY29udGV4dCwgaW5wdXQsIGxlbmd0aCk7Ci19Ci0KLXZvaWQg
TUQ1X0ZpbmFsKHVuc2lnbmVkIGNoYXIgaGFzaFsxNl0sIE1ENV9DVFgqIGNvbnRleHQpCi17Ci0g
ICAgZmluYWwoKShjb250ZXh0KTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7ICsraSkK
LSAgICAgICAgaGFzaFtpXSA9IGNvbnRleHQtPmRpZ2VzdFtpXTsKLX0KClByb3BlcnR5IGNoYW5n
ZXMgb246IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9NRDUuY3BwCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRl
ZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL01ENS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9NRDUuaAkocmV2aXNpb24gMjYzNzA1
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL01ENS5oCShub25leGlzdGVudCkKQEAgLTEs
NDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBNRDVfaAotI2RlZmluZSBNRDVfaAotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcg
VUxPTkc7Ci0KLXN0cnVjdCBNRDVfQ1RYIHsKLSAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7Ci0gICAgVUxPTkcgaVsyXTsKLSAgICBVTE9ORyBidWZbNF07Ci0gICAgdW5zaWduZWQg
Y2hhciBpbls2NF07Ci0gICAgdW5zaWduZWQgY2hhciBkaWdlc3RbMTZdOwotfTsKLQotdm9pZCBN
RDVfSW5pdChNRDVfQ1RYKik7Ci12b2lkIE1ENV9VcGRhdGUoTUQ1X0NUWCosIHVuc2lnbmVkIGNo
YXIqIGlucHV0LCB1bnNpZ25lZCBsZW5ndGgpOwotdm9pZCBNRDVfRmluYWwodW5zaWduZWQgY2hh
ciBoYXNoWzE2XSwgTUQ1X0NUWCopOwotCi0jZW5kaWYgLy8gTUQ1X2gKClByb3BlcnR5IGNoYW5n
ZXMgb246IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9NRDUuaApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6
IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9QaXhlbER1bXBTdXBw
b3J0RGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9Q
aXhlbER1bXBTdXBwb3J0RGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNjM3MDUpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vUGl4ZWxEdW1wU3VwcG9ydERpcmVjdDJELmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnREaXJlY3Qy
RC5oIgogCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWUuaCIKLSNpbmNsdWRlICJNRDUuaCIKICNp
bmNsdWRlICJQaXhlbER1bXBTdXBwb3J0LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1
ZGUgPGN0eXBlLmg+CkBAIC02NCw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIHByaW50UE5HKElEMkQx
Qml0bWFwKiBpbWFnZSwKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQuCiB9CiAKLXZvaWQgY29tcHV0
ZU1ENUhhc2hTdHJpbmdGb3JCaXRtYXBDb250ZXh0KEJpdG1hcENvbnRleHQqIGNvbnRleHQsIGNo
YXIgaGFzaFN0cmluZ1szM10pCit2b2lkIGNvbXB1dGVTSEExSGFzaFN0cmluZ0ZvckJpdG1hcENv
bnRleHQoQml0bWFwQ29udGV4dCogY29udGV4dCwgY2hhciBoYXNoU3RyaW5nWzMzXSkKIHsKICAg
ICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgVU5VU0VEX1BBUkFNKGhhc2hTdHJpbmcpOwpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjM3MDUpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3
ICs1Nyw2IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0cy9XVEYvTGlzdEhhc2hTZXQu
Y3BwCiAgICAgVGVzdHMvV1RGL0xvY2suY3BwCiAgICAgVGVzdHMvV1RGL0xvZ2dlci5jcHAKLSAg
ICBUZXN0cy9XVEYvTUQ1LmNwcAogICAgIFRlc3RzL1dURi9NYXJrYWJsZS5jcHAKICAgICBUZXN0
cy9XVEYvTWF0aEV4dHJhcy5jcHAKICAgICBUZXN0cy9XVEYvTWVkaWFUaW1lLmNwcApJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MzcwNSkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC01NDYsNyArNTQ2LDYgQEAKIAkJN0M4M0RFRTAxRDBBNTkwQzAwRkVCQ0YzIC8qIElu
dGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjY2RkFGRDIxNUU1Nzc1MjAwRjYxRDVCIC8qIEludGVnZXJUb1N0
cmluZ0NvbnZlcnNpb24uY3BwICovOyB9OwogCQk3QzgzREVFODFEMEE1OTBDMDBGRUJDRjMgLyog
TGlzdEhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjYzMDBCMTcxNjc1NUNEOTAwNjY4ODZEIC8qIExpc3RIYXNoU2V0LmNwcCAqLzsgfTsK
IAkJN0M4M0RFRUQxRDBBNTkwQzAwRkVCQ0YzIC8qIE1hdGhFeHRyYXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjQwMzlGOUMxNUU2RDhCMzAwNzI1
NUQ2IC8qIE1hdGhFeHRyYXMuY3BwICovOyB9OwotCQk3QzgzREVFRjFEMEE1OTBDMDBGRUJDRjMg
LyogTUQ1LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENENTM5M0M3MTc1N0JBOTcwMEMwNzEyMyAvKiBNRDUuY3BwICovOyB9OwogCQk3QzgzREVGMTFE
MEE1OTBDMDBGRUJDRjMgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENENTQ5N0IzMTU4NTdGMEMwMEI1QkMzMCAvKiBNZWRpYVRp
bWUuY3BwICovOyB9OwogCQk3QzgzREVGNjFEMEE1OTBDMDBGRUJDRjMgLyogTWV0YUFsbG9jYXRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM2
QzRDRTE0MTAzNEFEMDA1QjdGMEMgLyogTWV0YUFsbG9jYXRvci5jcHAgKi87IH07CiAJCTdDODNE
RUZFMUQwQTU5MEMwMEZFQkNGMyAvKiBOYWtlZFB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUI2Rjc0RTFCMkJBNDRFMDA5RTQ5MjIgLyogTmFr
ZWRQdHIuY3BwICovOyB9OwpAQCAtMjYxNCw3ICsyNjEzLDYgQEAKIAkJQ0QyRDBEMTkyMTM0NjU1
NjAwMThDNzg0IC8qIE5vd1BsYXlpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOb3dQbGF5
aW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDMwNjVERjIxNjU2ODJFMDBF
ODk1REYgLyogVmlkZW9RdWFsaXR5RGlzcGxheUNvbXBvc2l0aW5nLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVmlkZW9RdWFsaXR5RGlzcGxheUNvbXBvc2l0aW5nLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDMyMUIwMzFFM0E4NEI3MDBFQjIxQzggLyogdmlkZW8td2l0aC1t
dXRlZC1hdWRpby1hbmQtd2ViYXVkaW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJ2aWRlby13aXRoLW11dGVkLWF1ZGlvLWFuZC13ZWJhdWRpby5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQ0Q1MzkzQzcxNzU3QkE5NzAwQzA3MTIzIC8qIE1ENS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNRDUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDUzOTNDOTE3NTdCQUM0MDBDMDcxMjMgLyogU0hBMS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTSEExLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q1NDUxRTkxOUU0MUY5RDAwMTY5MzZGIC8qIENTU1BhcnNlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NQYXJzZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDU0OTdCMzE1ODU3RjBDMDBCNUJDMzAgLyog
TWVkaWFUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
VGltZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDU4LDcgKzQwNTYsNiBA
QAogCQkJCUE1N0Q1NEY1MUYzMzk1RDAwMEE5N0FBNyAvKiBMb2dnZXIuaCAqLywKIAkJCQlFQzc5
RjE2OEJFNDU0RTU3OUU0MTdCMDUgLyogTWFya2FibGUuY3BwICovLAogCQkJCUI0MDM5RjlDMTVF
NkQ4QjMwMDcyNTVENiAvKiBNYXRoRXh0cmFzLmNwcCAqLywKLQkJCQlDRDUzOTNDNzE3NTdCQTk3
MDBDMDcxMjMgLyogTUQ1LmNwcCAqLywKIAkJCQlDRDU0OTdCMzE1ODU3RjBDMDBCNUJDMzAgLyog
TWVkaWFUaW1lLmNwcCAqLywKIAkJCQkwRkM2QzRDRTE0MTAzNEFEMDA1QjdGMEMgLyogTWV0YUFs
bG9jYXRvci5jcHAgKi8sCiAJCQkJOTNBNDI3QUMxODBEQTYwRjAwQ0QyNEQ3IC8qIE1vdmVPbmx5
LmggKi8sCkBAIC00NzcxLDcgKzQ3NjgsNiBAQAogCQkJCUE1N0Q1NEY2MUYzMzk1RDAwMEE5N0FB
NyAvKiBMb2dnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDkwOUVFM0EyRDA5NDgwQzg4OTgy
RDU2IC8qIE1hcmthYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUVEMUQwQTU5MEMw
MEZFQkNGMyAvKiBNYXRoRXh0cmFzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDODNERUVGMUQw
QTU5MEMwMEZFQkNGMyAvKiBNRDUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRjExRDBB
NTkwQzAwRkVCQ0YzIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVG
NjFEMEE1OTBDMDBGRUJDRjMgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDRTc4NzA1RjIxMDdBQjk4MDA1M0FDNjcgLyogTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC00ODc1LDcgKzQ4NzEsNiBAQAogCQkJCTA3MTFERjUyMjI2QTk1
RkMwMDNERDJGNyAvKiBBVkZvdW5kYXRpb25Tb2Z0TGlua1Rlc3QubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VCNTFBNDExQTdFMDA0NDdDNEMgLyogQmFja0ZvcndhcmRMaXN0Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUM3RkVCMjAyMDdDMEYyRTAwRDIzMjc4IC8qIEJhY2tncm91bmRDb2xv
ci5tbSBpbiBTb3VyY2VzICovLAotCQkJCUNEMDM3MEUzMjRBNDREOTYwMEJBM0NBRSAvKiBNZWRp
YUxvYWRpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMTVDQkIzMDIzRjFGRjFBMDAzMDBDQzcg
LyogQmFja2xpZ2h0TGV2ZWxOb3RpZmljYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMTY5
MkRDQTIzRDEwREFFMDA2RTg4RjcgLyogQmF0dGVyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3
NEI3QTYwMURGMzZFRUUwMEFDQ0I2QyAvKiBCdW5kbGVFZGl0aW5nRGVsZWdhdGUubW0gaW4gU291
cmNlcyAqLywKQEAgLTUwOTcsNiArNTA5Miw3IEBACiAJCQkJMDc2RTUwN0YxRjQ1MTNENjAwNkU5
RjVBIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0UxODY2NDkxRjcyRThGMTAw
QTBDQUI2IC8qIE1hcmtlZFRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdDQzdERkUyMjY2
MzMwOTAwRTM5MTgxIC8qIE1lZGlhQnVmZmVyaW5nUG9saWN5Lm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0QwMzcwRTMyNEE0NEQ5NjAwQkEzQ0FFIC8qIE1lZGlhTG9hZGluZy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEQTMxNTk4MUVENTM2NTEwMDlGNjBEMyAvKiBNZWRpYVBsYXliYWNrU2xlZXBB
c3NlcnRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM5NDQyRTFFRjFGQzA4MDA1OUMzQzQg
LyogTWVkaWFTdHJlYW1UcmFja0RldGFjaGVkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCRTlF
NjYyMzc2MDg5RjAwQjRFMTE3IC8qIE1lZGlhVHlwZS5tbSBpbiBTb3VyY2VzICovLApJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTUQ1LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NRDUuY3BwCShyZXZpc2lvbiAyNjM3MDUpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NRDUuY3BwCShub25leGlzdGVudCkKQEAgLTEs
NDcgKzAsMCBAQAotLyoKLSAqIFRoaXMgY29kZSBpbXBsZW1lbnRzIHRoZSBNRDUgbWVzc2FnZS1k
aWdlc3QgYWxnb3JpdGhtLgotICogVGhlIGFsZ29yaXRobSBpcyBkdWUgdG8gUm9uIFJpdmVzdC4g
IFRoaXMgY29kZSB3YXMKLSAqIHdyaXR0ZW4gYnkgQ29saW4gUGx1bWIgaW4gMTk5Mywgbm8gY29w
eXJpZ2h0IGlzIGNsYWltZWQuCi0gKiBUaGlzIGNvZGUgaXMgaW4gdGhlIHB1YmxpYyBkb21haW47
IGRvIHdpdGggaXQgd2hhdCB5b3Ugd2lzaC4KLSAqCi0gKiBFcXVpdmFsZW50IGNvZGUgaXMgYXZh
aWxhYmxlIGZyb20gUlNBIERhdGEgU2VjdXJpdHksIEluYy4KLSAqIFRoaXMgY29kZSBoYXMgYmVl
biB0ZXN0ZWQgYWdhaW5zdCB0aGF0LCBhbmQgaXMgZXF1aXZhbGVudCwKLSAqIGV4Y2VwdCB0aGF0
IHlvdSBkb24ndCBuZWVkIHRvIGluY2x1ZGUgdHdvIHBhZ2VzIG9mIGxlZ2FsZXNlCi0gKiB3aXRo
IGV2ZXJ5IGNvcHkuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHd0Zi9N
RDUuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRpYyB2b2lkIGV4
cGVjdE1ENShDU3RyaW5nIGlucHV0LCBDU3RyaW5nIGV4cGVjdGVkKQotewotICAgIE1ENSBtZDU7
Ci0gICAgbWQ1LmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGlucHV0
LmRhdGEoKSksIGlucHV0Lmxlbmd0aCgpKTsKLSAgICBNRDU6OkRpZ2VzdCBkaWdlc3Q7Ci0gICAg
bWQ1LmNoZWNrc3VtKGRpZ2VzdCk7Ci0gICAgY2hhciogYnVmID0gMDsKLSAgICBDU3RyaW5nIGFj
dHVhbCA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoMzIsIGJ1Zik7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBNRDU6Omhhc2hTaXplOyBpKyssIGJ1ZiArPSAyKQotICAgICAgICBzbnBy
aW50ZihidWYsIDMsICIlMDJ4IiwgZGlnZXN0W2ldKTsKLQotICAgIEFTU0VSVF9FUShleHBlY3Rl
ZC5sZW5ndGgoKSwgYWN0dWFsLmxlbmd0aCgpKTsKLSAgICBBU1NFUlRfU1RSRVEoZXhwZWN0ZWQu
ZGF0YSgpLCBhY3R1YWwuZGF0YSgpKTsKLX0KLQotVEVTVChXVEZfTUQ1LCBDb21wdXRhdGlvbikK
LXsKLSAgICAvLyBNRDUgVGVzdCBzdWl0ZSBmcm9tIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3Jm
YzEzMjEudHh0LgotICAgIGV4cGVjdE1ENSgiIiwgImQ0MWQ4Y2Q5OGYwMGIyMDRlOTgwMDk5OGVj
Zjg0MjdlIik7Ci0gICAgZXhwZWN0TUQ1KCJhIiwgIjBjYzE3NWI5YzBmMWI2YTgzMWMzOTllMjY5
NzcyNjYxIik7Ci0gICAgZXhwZWN0TUQ1KCJhYmMiLCAiOTAwMTUwOTgzY2QyNGZiMGQ2OTYzZjdk
MjhlMTdmNzIiKTsKLSAgICBleHBlY3RNRDUoIm1lc3NhZ2UgZGlnZXN0IiwgImY5NmI2OTdkN2Ni
NzkzOGQ1MjVhMmYzMWFhZjE2MWQwIik7Ci0gICAgZXhwZWN0TUQ1KCJhYmNkZWZnaGlqa2xtbm9w
cXJzdHV2d3h5eiIsICJjM2ZjZDNkNzYxOTJlNDAwN2RmYjQ5NmNjYTY3ZTEzYiIpOwotICAgIGV4
cGVjdE1ENSgiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5ejAxMjM0NTY3ODkiLCAiZDE3NGFiOThkMjc3ZDlmNWE1NjExYzJjOWY0MTlkOWYiKTsKLSAg
ICBleHBlY3RNRDUoIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIiwgIjU3ZWRmNGEyMmJlM2M5NTVh
YzQ5ZGEyZTIxMDdiNjdhIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5k
ZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlv
bkNhaXJvLmNwcAkocmV2aXNpb24gMjYzNzA1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
YWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTIgKzM2
LDEyIEBACiAjaW5jbHVkZSA8Y2Fpcm8vY2Fpcm8uaD4KICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvTUQ1Lmg+CisjaW5jbHVkZSA8
d3RmL1NIQTEuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBX
VFIgewogCi1zdGF0aWMgdm9pZCBjb21wdXRlTUQ1SGFzaFN0cmluZ0ZvckNhaXJvU3VyZmFjZShj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNoYXIgaGFzaFN0cmluZ1szM10pCitzdGF0aWMgdm9p
ZCBjb21wdXRlU0hBMUhhc2hTdHJpbmdGb3JDYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBz
dXJmYWNlLCBjaGFyIGhhc2hTdHJpbmdbMzNdKQogewogICAgIEFTU0VSVChjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9mb3JtYXQoc3VyZmFjZSkgPT0gQ0FJUk9fRk9STUFUX0FSR0IzMiB8fCBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9mb3JtYXQoc3VyZmFjZSkgPT0gQ0FJUk9fRk9STUFUX1JHQjI0
KTsKIApAQCAtNDksMTQgKzQ5LDE0IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVNRDVIYXNoU3RyaW5n
Rm9yQ2Fpcm8KICAgICBzaXplX3QgcGl4ZWxzV2lkZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X3dpZHRoKHN1cmZhY2UpOwogICAgIHNpemVfdCBieXRlc1BlclJvdyA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKTsKIAotICAgIE1ENSBtZDVDb250ZXh0OworICAgIFNI
QTEgc2hhMTsKICAgICB1bnNpZ25lZCBjaGFyKiBiaXRtYXBEYXRhID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcio+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwogICAg
IGZvciAoc2l6ZV90IHJvdyA9IDA7IHJvdyA8IHBpeGVsc0hpZ2g7ICsrcm93KSB7Ci0gICAgICAg
IG1kNUNvbnRleHQuYWRkQnl0ZXMoYml0bWFwRGF0YSwgNCAqIHBpeGVsc1dpZGUpOworICAgICAg
ICBzaGExLmFkZEJ5dGVzKGJpdG1hcERhdGEsIDQgKiBwaXhlbHNXaWRlKTsKICAgICAgICAgYml0
bWFwRGF0YSArPSBieXRlc1BlclJvdzsKICAgICB9Ci0gICAgTUQ1OjpEaWdlc3QgaGFzaDsKLSAg
ICBtZDVDb250ZXh0LmNoZWNrc3VtKGhhc2gpOworICAgIFNIQTE6OkRpZ2VzdCBoYXNoOworICAg
IHNoYTEuY29tcHV0ZUhhc2goaGFzaCk7CiAKICAgICBzbnByaW50ZihoYXNoU3RyaW5nLCAzMywg
IiUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMnglMDJ4
JTAyeCUwMngiLAogICAgICAgICBoYXNoWzBdLCBoYXNoWzFdLCBoYXNoWzJdLCBoYXNoWzNdLCBo
YXNoWzRdLCBoYXNoWzVdLCBoYXNoWzZdLCBoYXNoWzddLApAQCAtMTIyLDcgKzEyMiw3IEBAIHZv
aWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXIKICAgICAgICAgcGFpbnRSZXBh
aW50UmVjdE92ZXJsYXkoc3VyZmFjZSwgcmVwYWludFJlY3RzKTsKIAogICAgIGNoYXIgYWN0dWFs
SGFzaFszM107Ci0gICAgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JDYWlyb1N1cmZhY2Uoc3VyZmFj
ZSwgYWN0dWFsSGFzaCk7CisgICAgY29tcHV0ZVNIQTFIYXNoU3RyaW5nRm9yQ2Fpcm9TdXJmYWNl
KHN1cmZhY2UsIGFjdHVhbEhhc2gpOwogICAgIGlmICghY29tcGFyZUFjdHVhbEhhc2hUb0V4cGVj
dGVkQW5kRHVtcFJlc3VsdHMoYWN0dWFsSGFzaCkpCiAgICAgICAgIGR1bXBCaXRtYXAoc3VyZmFj
ZSwgYWN0dWFsSGFzaCk7CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdElu
dm9jYXRpb25DRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9U
ZXN0SW52b2NhdGlvbkNHLmNwcAkocmV2aXNpb24gMjYzNzA1KQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCAr
MzEsOCBAQAogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SW1hZ2VJTy9D
R0ltYWdlRGVzdGluYXRpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tJbWFnZUNHLmg+Ci0jaW5j
bHVkZSA8d3RmL01ENS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvU0hBMS5oPgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICNpbmNsdWRlIDxDb3JlU2VydmljZXMvQ29yZVNlcnZpY2VzLmg+CkBAIC02NywxMCArNjcsMTAg
QEAgc3RhdGljIENHQ29udGV4dFJlZiBjcmVhdGVDR0NvbnRleHRGcm9tSQogICAgIHJldHVybiBj
cmVhdGVDR0NvbnRleHRGcm9tQ0dJbWFnZShpbWFnZS5nZXQoKSk7CiB9CiAKLXZvaWQgY29tcHV0
ZU1ENUhhc2hTdHJpbmdGb3JDb250ZXh0KENHQ29udGV4dFJlZiBiaXRtYXBDb250ZXh0LCBjaGFy
IGhhc2hTdHJpbmdbMzNdKQordm9pZCBjb21wdXRlU0hBMUhhc2hTdHJpbmdGb3JDb250ZXh0KENH
Q29udGV4dFJlZiBiaXRtYXBDb250ZXh0LCBjaGFyIGhhc2hTdHJpbmdbMzNdKQogewogICAgIGlm
ICghYml0bWFwQ29udGV4dCkgewotICAgICAgICBXVEZMb2dBbHdheXMoImNvbXB1dGVNRDVIYXNo
U3RyaW5nRm9yQ29udGV4dDogY29udGV4dCBpcyBudWxsXG4iKTsKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCJjb21wdXRlU0hBMUhhc2hTdHJpbmdGb3JDb250ZXh0OiBjb250ZXh0IGlzIG51bGxcbiIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChDR0JpdG1hcENvbnRleHRHZXRC
aXRzUGVyUGl4ZWwoYml0bWFwQ29udGV4dCkgPT0gMzIpOyAvLyBJbWFnZURpZmYgYXNzdW1lcyAz
MiBiaXQgUkdCQSwgd2UgbXVzdCBhcyB3ZWxsLgpAQCAtNzksNyArNzksNyBAQCB2b2lkIGNvbXB1
dGVNRDVIYXNoU3RyaW5nRm9yQ29udGV4dChDR0NvCiAgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0g
Q0dCaXRtYXBDb250ZXh0R2V0Qnl0ZXNQZXJSb3coYml0bWFwQ29udGV4dCk7CiAgICAgCiAgICAg
Ly8gV2UgbmVlZCB0byBzd2FwIHRoZSBieXRlcyB0byBlbnN1cmUgY29uc2lzdGVudCBoYXNoZXMg
aW5kZXBlbmRlbnRseSBvZiBlbmRpYW5uZXNzCi0gICAgTUQ1IG1kNTsKKyAgICBTSEExIHNoYTE7
CiAgICAgdW5zaWduZWQgY2hhciogYml0bWFwRGF0YSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXIqPihDR0JpdG1hcENvbnRleHRHZXREYXRhKGJpdG1hcENvbnRleHQpKTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBpZiAoKENHQml0bWFwQ29udGV4dEdldEJpdG1hcEluZm8oYml0bWFwQ29u
dGV4dCkgJiBrQ0dCaXRtYXBCeXRlT3JkZXJNYXNrKSA9PSBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJp
ZykgewpAQCAtODcsMjMgKzg3LDIzIEBAIHZvaWQgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JDb250
ZXh0KENHQ28KICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoNCAqIHBpeGVsc1dp
ZGUpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBwaXhl
bHNXaWRlOyBjb2x1bW4rKykKICAgICAgICAgICAgICAgICBidWZmZXJbY29sdW1uXSA9IE9TUmVh
ZExpdHRsZUludDMyKGJpdG1hcERhdGEsIDQgKiBjb2x1bW4pOwotICAgICAgICAgICAgbWQ1LmFk
ZEJ5dGVzKGJ1ZmZlcik7CisgICAgICAgICAgICBzaGExLmFkZEJ5dGVzKGJ1ZmZlcik7CiAgICAg
ICAgICAgICBiaXRtYXBEYXRhICs9IGJ5dGVzUGVyUm93OwogICAgICAgICB9CiAgICAgfSBlbHNl
CiAjZW5kaWYKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgcm93ID0gMDsgcm93IDwgcGl4
ZWxzSGlnaDsgcm93KyspIHsKLSAgICAgICAgICAgIG1kNS5hZGRCeXRlcyhiaXRtYXBEYXRhLCA0
ICogcGl4ZWxzV2lkZSk7CisgICAgICAgICAgICBzaGExLmFkZEJ5dGVzKGJpdG1hcERhdGEsIDQg
KiBwaXhlbHNXaWRlKTsKICAgICAgICAgICAgIGJpdG1hcERhdGEgKz0gYnl0ZXNQZXJSb3c7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBNRDU6OkRpZ2VzdCBoYXNoOwotICAgIG1kNS5jaGVja3N1
bShoYXNoKTsKKyAgICBTSEExOjpEaWdlc3QgaGFzaDsKKyAgICBzaGExLmNvbXB1dGVIYXNoKGhh
c2gpOwogCiAgICAgaGFzaFN0cmluZ1swXSA9ICdcMCc7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBNRDU6Omhhc2hTaXplOyBpKyspCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsg
aSsrKQogICAgICAgICBzbnByaW50ZihoYXNoU3RyaW5nLCAzMywgIiVzJTAyeCIsIGhhc2hTdHJp
bmcsIGhhc2hbaV0pOwogfQogCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBUZXN0SW52b2NhdGlv
bjo6ZHVtcFBpeGVsc0FuZENvbXBhcgogICAgICAgICBwYWludFJlcGFpbnRSZWN0T3ZlcmxheShj
b250ZXh0LmdldCgpLCBpbWFnZVNpemUsIHJlcGFpbnRSZWN0cyk7CiAKICAgICBjaGFyIGFjdHVh
bEhhc2hbMzNdOwotICAgIGNvbXB1dGVNRDVIYXNoU3RyaW5nRm9yQ29udGV4dChjb250ZXh0Lmdl
dCgpLCBhY3R1YWxIYXNoKTsKKyAgICBjb21wdXRlU0hBMUhhc2hTdHJpbmdGb3JDb250ZXh0KGNv
bnRleHQuZ2V0KCksIGFjdHVhbEhhc2gpOwogICAgIGlmICghY29tcGFyZUFjdHVhbEhhc2hUb0V4
cGVjdGVkQW5kRHVtcFJlc3VsdHMoYWN0dWFsSGFzaCkpCiAgICAgICAgIGR1bXBCaXRtYXAoY29u
dGV4dC5nZXQoKSwgYWN0dWFsSGFzaCk7CiB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVy
L3dpbi9UZXN0SW52b2NhdGlvbkRpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL3dpbi9UZXN0SW52b2NhdGlvbkRpcmVjdDJELmNwcAkocmV2aXNpb24gMjYz
NzA1KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdEludm9jYXRpb25EaXJlY3Qy
RC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8Y3N0ZGlvPgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL01ENS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRy
YXMuaD4KIAogbmFtZXNwYWNlIFdUUiB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>